Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 13 Jan 2016 20:00:46 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r293840 - in vendor/clang/dist: include/clang/AST include/clang/ASTMatchers include/clang/Basic include/clang/CodeGen include/clang/Driver include/clang/Lex include/clang/Parse include/...
Message-ID:  <201601132000.u0DK0kEL085013@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Wed Jan 13 20:00:46 2016
New Revision: 293840
URL: https://svnweb.freebsd.org/changeset/base/293840

Log:
  Vendor import of clang trunk r257626:
  https://llvm.org/svn/llvm-project/cfe/trunk@257626

Added:
  vendor/clang/dist/test/Analysis/inlining/analysis-order.c   (contents, props changed)
  vendor/clang/dist/test/Analysis/range_casts.c   (contents, props changed)
  vendor/clang/dist/test/CXX/class/class.union/class.union.anon/
  vendor/clang/dist/test/CXX/class/class.union/class.union.anon/p1.cpp   (contents, props changed)
  vendor/clang/dist/test/CXX/class/class.union/class.union.anon/p4.cpp   (contents, props changed)
  vendor/clang/dist/test/CodeGenCXX/builtins-systemz-zvector.cpp   (contents, props changed)
  vendor/clang/dist/test/CodeGenOpenCL/pipe_types.cl
  vendor/clang/dist/test/Driver/arm-xscale.c   (contents, props changed)
  vendor/clang/dist/test/Driver/cuda-bad-arch.cu
  vendor/clang/dist/test/Driver/cuda-unused-arg-warning.cu
  vendor/clang/dist/test/Index/print-type-declaration.cpp   (contents, props changed)
  vendor/clang/dist/test/Misc/ast-print-char-literal.cpp   (contents, props changed)
  vendor/clang/dist/test/Modules/Inputs/using-decl-redecl/d.h   (contents, props changed)
  vendor/clang/dist/test/Modules/tag-injection.c   (contents, props changed)
  vendor/clang/dist/test/PCH/chain-default-argument-instantiation.cpp   (contents, props changed)
  vendor/clang/dist/test/PCH/cxx-char-literal.cpp   (contents, props changed)
  vendor/clang/dist/test/Sema/darwin-tls.c   (contents, props changed)
  vendor/clang/dist/test/SemaCUDA/attributes-on-non-cuda.cu
  vendor/clang/dist/test/SemaCUDA/bad-attributes.cu
  vendor/clang/dist/test/SemaCXX/linkage-invalid-decl.cpp   (contents, props changed)
  vendor/clang/dist/test/SemaOpenCL/invalid-pipes-cl2.0.cl
  vendor/clang/dist/test/SemaOpenCL/pipes-1.2-negative.cl
  vendor/clang/dist/tools/scan-build-py/
  vendor/clang/dist/tools/scan-build-py/README.md
  vendor/clang/dist/tools/scan-build-py/bin/
  vendor/clang/dist/tools/scan-build-py/bin/analyze-build
  vendor/clang/dist/tools/scan-build-py/bin/analyze-c++
  vendor/clang/dist/tools/scan-build-py/bin/analyze-cc
  vendor/clang/dist/tools/scan-build-py/bin/intercept-build
  vendor/clang/dist/tools/scan-build-py/bin/intercept-c++
  vendor/clang/dist/tools/scan-build-py/bin/intercept-cc
  vendor/clang/dist/tools/scan-build-py/bin/scan-build
  vendor/clang/dist/tools/scan-build-py/libear/
  vendor/clang/dist/tools/scan-build-py/libear/__init__.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libear/config.h.in   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libear/ear.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/
  vendor/clang/dist/tools/scan-build-py/libscanbuild/__init__.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/analyze.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/clang.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/command.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/intercept.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/report.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/resources/
  vendor/clang/dist/tools/scan-build-py/libscanbuild/resources/scanview.css   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/resources/selectable.js
  vendor/clang/dist/tools/scan-build-py/libscanbuild/resources/sorttable.js
  vendor/clang/dist/tools/scan-build-py/libscanbuild/runner.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/libscanbuild/shell.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/
  vendor/clang/dist/tools/scan-build-py/tests/__init__.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/
  vendor/clang/dist/tools/scan-build-py/tests/functional/__init__.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/cases/
  vendor/clang/dist/tools/scan-build-py/tests/functional/cases/__init__.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/cases/test_create_cdb.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/cases/test_exec_anatomy.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/cases/test_from_cdb.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/cases/test_from_cmd.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/exec/
  vendor/clang/dist/tools/scan-build-py/tests/functional/exec/CMakeLists.txt   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/exec/config.h.in   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/exec/main.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/broken-one.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/broken-two.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/build/
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/build/Makefile   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/clean-one.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/clean-two.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/compilation_database/
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/compilation_database/build_broken.json.in   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/compilation_database/build_clean.json.in   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/compilation_database/build_regular.json.in   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/emit-one.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/emit-two.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/include/
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/include/clean-one.h   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/functional/src/main.c   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/
  vendor/clang/dist/tools/scan-build-py/tests/unit/__init__.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/fixtures.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_analyze.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_clang.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_command.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_intercept.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_report.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_runner.py   (contents, props changed)
  vendor/clang/dist/tools/scan-build-py/tests/unit/test_shell.py   (contents, props changed)
Deleted:
  vendor/clang/dist/test/CXX/class/class.union/p8.cpp
  vendor/clang/dist/test/SemaCUDA/attributes.cu
Modified:
  vendor/clang/dist/include/clang/AST/ASTContext.h
  vendor/clang/dist/include/clang/AST/ASTMutationListener.h
  vendor/clang/dist/include/clang/AST/BuiltinTypes.def
  vendor/clang/dist/include/clang/AST/Decl.h
  vendor/clang/dist/include/clang/AST/DeclBase.h
  vendor/clang/dist/include/clang/AST/Expr.h
  vendor/clang/dist/include/clang/AST/ExprCXX.h
  vendor/clang/dist/include/clang/AST/OperationKinds.h
  vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h
  vendor/clang/dist/include/clang/AST/Stmt.h
  vendor/clang/dist/include/clang/AST/Type.h
  vendor/clang/dist/include/clang/AST/TypeLoc.h
  vendor/clang/dist/include/clang/AST/TypeNodes.def
  vendor/clang/dist/include/clang/ASTMatchers/ASTMatchersInternal.h
  vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td
  vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h
  vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td
  vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td
  vendor/clang/dist/include/clang/Basic/Specifiers.h
  vendor/clang/dist/include/clang/Basic/TokenKinds.def
  vendor/clang/dist/include/clang/Basic/VirtualFileSystem.h
  vendor/clang/dist/include/clang/CodeGen/BackendUtil.h
  vendor/clang/dist/include/clang/Driver/Action.h
  vendor/clang/dist/include/clang/Driver/Compilation.h
  vendor/clang/dist/include/clang/Driver/Driver.h
  vendor/clang/dist/include/clang/Driver/Options.td
  vendor/clang/dist/include/clang/Driver/ToolChain.h
  vendor/clang/dist/include/clang/Lex/LiteralSupport.h
  vendor/clang/dist/include/clang/Parse/Parser.h
  vendor/clang/dist/include/clang/Sema/DeclSpec.h
  vendor/clang/dist/include/clang/Sema/Lookup.h
  vendor/clang/dist/include/clang/Sema/Overload.h
  vendor/clang/dist/include/clang/Sema/Sema.h
  vendor/clang/dist/include/clang/Serialization/ASTBitCodes.h
  vendor/clang/dist/include/clang/Serialization/ASTWriter.h
  vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/MemRegion.h
  vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SValBuilder.h
  vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h
  vendor/clang/dist/include/clang/StaticAnalyzer/Core/PathSensitive/SymbolManager.h
  vendor/clang/dist/lib/AST/ASTContext.cpp
  vendor/clang/dist/lib/AST/ASTDumper.cpp
  vendor/clang/dist/lib/AST/ASTImporter.cpp
  vendor/clang/dist/lib/AST/Decl.cpp
  vendor/clang/dist/lib/AST/DeclBase.cpp
  vendor/clang/dist/lib/AST/Expr.cpp
  vendor/clang/dist/lib/AST/ExprCXX.cpp
  vendor/clang/dist/lib/AST/ExprConstant.cpp
  vendor/clang/dist/lib/AST/ItaniumMangle.cpp
  vendor/clang/dist/lib/AST/MicrosoftMangle.cpp
  vendor/clang/dist/lib/AST/RecordLayoutBuilder.cpp
  vendor/clang/dist/lib/AST/StmtPrinter.cpp
  vendor/clang/dist/lib/AST/Type.cpp
  vendor/clang/dist/lib/AST/TypePrinter.cpp
  vendor/clang/dist/lib/Basic/Targets.cpp
  vendor/clang/dist/lib/Basic/VirtualFileSystem.cpp
  vendor/clang/dist/lib/CodeGen/BackendUtil.cpp
  vendor/clang/dist/lib/CodeGen/CGDebugInfo.cpp
  vendor/clang/dist/lib/CodeGen/CGDebugInfo.h
  vendor/clang/dist/lib/CodeGen/CGExpr.cpp
  vendor/clang/dist/lib/CodeGen/CGExprAgg.cpp
  vendor/clang/dist/lib/CodeGen/CGExprComplex.cpp
  vendor/clang/dist/lib/CodeGen/CGExprConstant.cpp
  vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp
  vendor/clang/dist/lib/CodeGen/CGOpenCLRuntime.cpp
  vendor/clang/dist/lib/CodeGen/CGOpenCLRuntime.h
  vendor/clang/dist/lib/CodeGen/CGOpenMPRuntime.cpp
  vendor/clang/dist/lib/CodeGen/CGOpenMPRuntime.h
  vendor/clang/dist/lib/CodeGen/CodeGenAction.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenFunction.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenPGO.cpp
  vendor/clang/dist/lib/CodeGen/CodeGenTypes.cpp
  vendor/clang/dist/lib/CodeGen/CoverageMappingGen.cpp
  vendor/clang/dist/lib/CodeGen/CoverageMappingGen.h
  vendor/clang/dist/lib/CodeGen/ItaniumCXXABI.cpp
  vendor/clang/dist/lib/CodeGen/ObjectFilePCHContainerOperations.cpp
  vendor/clang/dist/lib/Driver/Action.cpp
  vendor/clang/dist/lib/Driver/Compilation.cpp
  vendor/clang/dist/lib/Driver/Driver.cpp
  vendor/clang/dist/lib/Driver/InputInfo.h
  vendor/clang/dist/lib/Driver/MSVCToolChain.cpp
  vendor/clang/dist/lib/Driver/MinGWToolChain.cpp
  vendor/clang/dist/lib/Driver/ToolChains.cpp
  vendor/clang/dist/lib/Driver/ToolChains.h
  vendor/clang/dist/lib/Driver/Tools.cpp
  vendor/clang/dist/lib/Driver/Tools.h
  vendor/clang/dist/lib/Edit/RewriteObjCFoundationAPI.cpp
  vendor/clang/dist/lib/Format/ContinuationIndenter.cpp
  vendor/clang/dist/lib/Format/Format.cpp
  vendor/clang/dist/lib/Format/TokenAnnotator.cpp
  vendor/clang/dist/lib/Format/UnwrappedLineParser.cpp
  vendor/clang/dist/lib/Format/UnwrappedLineParser.h
  vendor/clang/dist/lib/Format/WhitespaceManager.cpp
  vendor/clang/dist/lib/Format/WhitespaceManager.h
  vendor/clang/dist/lib/Frontend/CompilerInvocation.cpp
  vendor/clang/dist/lib/Frontend/FrontendActions.cpp
  vendor/clang/dist/lib/Frontend/MultiplexConsumer.cpp
  vendor/clang/dist/lib/Headers/altivec.h
  vendor/clang/dist/lib/Lex/HeaderSearch.cpp
  vendor/clang/dist/lib/Lex/LiteralSupport.cpp
  vendor/clang/dist/lib/Lex/Pragma.cpp
  vendor/clang/dist/lib/Parse/ParseDecl.cpp
  vendor/clang/dist/lib/Parse/ParseDeclCXX.cpp
  vendor/clang/dist/lib/Parse/ParseOpenMP.cpp
  vendor/clang/dist/lib/Parse/ParsePragma.cpp
  vendor/clang/dist/lib/Parse/ParseStmt.cpp
  vendor/clang/dist/lib/Parse/Parser.cpp
  vendor/clang/dist/lib/Sema/DeclSpec.cpp
  vendor/clang/dist/lib/Sema/SemaCast.cpp
  vendor/clang/dist/lib/Sema/SemaChecking.cpp
  vendor/clang/dist/lib/Sema/SemaDecl.cpp
  vendor/clang/dist/lib/Sema/SemaDeclAttr.cpp
  vendor/clang/dist/lib/Sema/SemaDeclCXX.cpp
  vendor/clang/dist/lib/Sema/SemaExpr.cpp
  vendor/clang/dist/lib/Sema/SemaExprCXX.cpp
  vendor/clang/dist/lib/Sema/SemaExprObjC.cpp
  vendor/clang/dist/lib/Sema/SemaLookup.cpp
  vendor/clang/dist/lib/Sema/SemaOverload.cpp
  vendor/clang/dist/lib/Sema/SemaTemplate.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateDeduction.cpp
  vendor/clang/dist/lib/Sema/SemaTemplateVariadic.cpp
  vendor/clang/dist/lib/Sema/SemaType.cpp
  vendor/clang/dist/lib/Sema/TreeTransform.h
  vendor/clang/dist/lib/Serialization/ASTCommon.h
  vendor/clang/dist/lib/Serialization/ASTReader.cpp
  vendor/clang/dist/lib/Serialization/ASTReaderDecl.cpp
  vendor/clang/dist/lib/Serialization/ASTReaderStmt.cpp
  vendor/clang/dist/lib/Serialization/ASTWriter.cpp
  vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp
  vendor/clang/dist/lib/Serialization/ASTWriterStmt.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/CStringChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/ExprEngineC.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/MemRegion.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/ProgramState.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/RangeConstraintManager.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/SValBuilder.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/SVals.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/SimpleSValBuilder.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/Store.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Core/SymbolManager.cpp
  vendor/clang/dist/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
  vendor/clang/dist/test/CXX/class/class.mem/p13.cpp
  vendor/clang/dist/test/CXX/temp/temp.res/temp.local/p6.cpp
  vendor/clang/dist/test/CodeGen/builtins-ppc-vsx.c
  vendor/clang/dist/test/CodeGen/target-data.c
  vendor/clang/dist/test/CodeGenCXX/mangle-ms.cpp
  vendor/clang/dist/test/CodeGenCXX/pass-object-size.cpp
  vendor/clang/dist/test/CodeGenCXX/vector-splat-conversion.cpp
  vendor/clang/dist/test/CodeGenOpenCL/bool_cast.cl
  vendor/clang/dist/test/Driver/amdgpu-toolchain.c
  vendor/clang/dist/test/Driver/appletvos-version-min.c
  vendor/clang/dist/test/Driver/cl-options.c
  vendor/clang/dist/test/Driver/cuda-options.cu
  vendor/clang/dist/test/Driver/debug-options.c
  vendor/clang/dist/test/Driver/fortran.f95
  vendor/clang/dist/test/Driver/gcc_forward.c
  vendor/clang/dist/test/Driver/pic.c
  vendor/clang/dist/test/Driver/wasm-toolchain.c
  vendor/clang/dist/test/Driver/wasm32-unknown-unknown.cpp
  vendor/clang/dist/test/Driver/wasm64-unknown-unknown.cpp
  vendor/clang/dist/test/Misc/ast-dump-lookups.cpp
  vendor/clang/dist/test/Modules/Inputs/DebugCXX.h
  vendor/clang/dist/test/Modules/Inputs/dummy.h
  vendor/clang/dist/test/Modules/Inputs/using-decl-redecl/a.h
  vendor/clang/dist/test/Modules/Inputs/using-decl-redecl/module.modulemap
  vendor/clang/dist/test/Modules/ModuleDebugInfo.cpp
  vendor/clang/dist/test/Modules/modular_maps.cpp
  vendor/clang/dist/test/Modules/separate_map_tree.cpp
  vendor/clang/dist/test/Modules/tag-injection.cpp
  vendor/clang/dist/test/Modules/using-decl-redecl.cpp
  vendor/clang/dist/test/OpenMP/barrier_ast_print.cpp
  vendor/clang/dist/test/OpenMP/barrier_messages.cpp
  vendor/clang/dist/test/OpenMP/cancel_messages.cpp
  vendor/clang/dist/test/OpenMP/cancellation_point_messages.cpp
  vendor/clang/dist/test/OpenMP/flush_messages.cpp
  vendor/clang/dist/test/OpenMP/target_codegen_registration.cpp
  vendor/clang/dist/test/OpenMP/target_codegen_registration_naming.cpp
  vendor/clang/dist/test/OpenMP/taskwait_messages.cpp
  vendor/clang/dist/test/OpenMP/taskyield_messages.cpp
  vendor/clang/dist/test/OpenMP/threadprivate_messages.cpp
  vendor/clang/dist/test/PCH/ocl_types.cl
  vendor/clang/dist/test/PCH/ocl_types.h
  vendor/clang/dist/test/Sema/bitfield-layout.c
  vendor/clang/dist/test/Sema/decl-in-prototype.c
  vendor/clang/dist/test/Sema/integer-overflow.c
  vendor/clang/dist/test/Sema/pass-object-size.c
  vendor/clang/dist/test/SemaCUDA/Inputs/cuda.h
  vendor/clang/dist/test/SemaCXX/anonymous-union.cpp
  vendor/clang/dist/test/SemaCXX/conversion.cpp
  vendor/clang/dist/test/SemaCXX/pass-object-size.cpp
  vendor/clang/dist/test/SemaTemplate/default-arguments-cxx0x.cpp
  vendor/clang/dist/test/SemaTemplate/temp_arg_template.cpp
  vendor/clang/dist/tools/CMakeLists.txt
  vendor/clang/dist/tools/c-index-test/c-index-test.c
  vendor/clang/dist/tools/libclang/CIndex.cpp
  vendor/clang/dist/tools/libclang/CXType.cpp
  vendor/clang/dist/unittests/AST/SourceLocationTest.cpp
  vendor/clang/dist/unittests/Basic/VirtualFileSystemTest.cpp
  vendor/clang/dist/unittests/Format/FormatTest.cpp
  vendor/clang/dist/unittests/Format/FormatTestJS.cpp
  vendor/clang/dist/unittests/Format/FormatTestSelective.cpp

Modified: vendor/clang/dist/include/clang/AST/ASTContext.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/ASTContext.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/ASTContext.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -131,6 +131,7 @@ class ASTContext : public RefCountedBase
   mutable llvm::FoldingSet<AutoType> AutoTypes;
   mutable llvm::FoldingSet<AtomicType> AtomicTypes;
   llvm::FoldingSet<AttributedType> AttributedTypes;
+  mutable llvm::FoldingSet<PipeType> PipeTypes;
 
   mutable llvm::FoldingSet<QualifiedTemplateName> QualifiedTemplateNames;
   mutable llvm::FoldingSet<DependentTemplateName> DependentTemplateNames;
@@ -1079,6 +1080,9 @@ public:
   /// blocks.
   QualType getBlockDescriptorType() const;
 
+  /// \brief Return pipe type for the specified type.
+  QualType getPipeType(QualType T) const;
+
   /// Gets the struct used to keep track of the extended descriptor for
   /// pointer to blocks.
   QualType getBlockDescriptorExtendedType() const;
@@ -2279,9 +2283,13 @@ public:
   /// \brief Make an APSInt of the appropriate width and signedness for the
   /// given \p Value and integer \p Type.
   llvm::APSInt MakeIntValue(uint64_t Value, QualType Type) const {
-    llvm::APSInt Res(getIntWidth(Type), 
-                     !Type->isSignedIntegerOrEnumerationType());
+    // If Type is a signed integer type larger than 64 bits, we need to be sure
+    // to sign extend Res appropriately.
+    llvm::APSInt Res(64, !Type->isSignedIntegerOrEnumerationType());
     Res = Value;
+    unsigned Width = getIntWidth(Type);
+    if (Width != Res.getBitWidth())
+      return Res.extOrTrunc(Width);
     return Res;
   }
 

Modified: vendor/clang/dist/include/clang/AST/ASTMutationListener.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/ASTMutationListener.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/ASTMutationListener.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -29,6 +29,7 @@ namespace clang {
   class ObjCContainerDecl;
   class ObjCInterfaceDecl;
   class ObjCPropertyDecl;
+  class ParmVarDecl;
   class QualType;
   class RecordDecl;
   class TagDecl;
@@ -88,6 +89,9 @@ public:
   /// \brief A function template's definition was instantiated.
   virtual void FunctionDefinitionInstantiated(const FunctionDecl *D) {}
 
+  /// \brief A default argument was instantiated.
+  virtual void DefaultArgumentInstantiated(const ParmVarDecl *D) {}
+
   /// \brief A new objc category class was added for an interface.
   virtual void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD,
                                             const ObjCInterfaceDecl *IFD) {}

Modified: vendor/clang/dist/include/clang/AST/BuiltinTypes.def
==============================================================================
--- vendor/clang/dist/include/clang/AST/BuiltinTypes.def	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/BuiltinTypes.def	Wed Jan 13 20:00:46 2016	(r293840)
@@ -1,4 +1,4 @@
-//===-- BuiltinTypeNodes.def - Metadata about BuiltinTypes ------*- C++ -*-===//
+//===-- BuiltinTypes.def - Metadata about BuiltinTypes ----------*- C++ -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //

Modified: vendor/clang/dist/include/clang/AST/Decl.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/Decl.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/Decl.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -2440,10 +2440,9 @@ class IndirectFieldDecl : public ValueDe
   NamedDecl **Chaining;
   unsigned ChainingSize;
 
-  IndirectFieldDecl(DeclContext *DC, SourceLocation L,
+  IndirectFieldDecl(ASTContext &C, DeclContext *DC, SourceLocation L,
                     DeclarationName N, QualType T,
-                    NamedDecl **CH, unsigned CHS)
-    : ValueDecl(IndirectField, DC, L, N, T), Chaining(CH), ChainingSize(CHS) {}
+                    NamedDecl **CH, unsigned CHS);
 
 public:
   static IndirectFieldDecl *Create(ASTContext &C, DeclContext *DC,

Modified: vendor/clang/dist/include/clang/AST/DeclBase.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/DeclBase.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/DeclBase.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -113,6 +113,9 @@ public:
     /// Tags, declared with 'struct foo;' and referenced with
     /// 'struct foo'.  All tags are also types.  This is what
     /// elaborated-type-specifiers look for in C.
+    /// This also contains names that conflict with tags in the
+    /// same scope but that are otherwise ordinary names (non-type
+    /// template parameters and indirect field declarations).
     IDNS_Tag                 = 0x0002,
 
     /// Types, declared with 'struct foo', typedefs, etc.
@@ -131,7 +134,7 @@ public:
     IDNS_Namespace           = 0x0010,
 
     /// Ordinary names.  In C, everything that's not a label, tag,
-    /// or member ends up here.
+    /// member, or function-local extern ends up here.
     IDNS_Ordinary            = 0x0020,
 
     /// Objective C \@protocol.
@@ -160,7 +163,9 @@ public:
 
     /// This declaration is a function-local extern declaration of a
     /// variable or function. This may also be IDNS_Ordinary if it
-    /// has been declared outside any function.
+    /// has been declared outside any function. These act mostly like
+    /// invisible friend declarations, but are also visible to unqualified
+    /// lookup within the scope of the declaring function.
     IDNS_LocalExtern         = 0x0800
   };
 

Modified: vendor/clang/dist/include/clang/AST/Expr.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/Expr.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/Expr.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -1292,6 +1292,7 @@ public:
   enum CharacterKind {
     Ascii,
     Wide,
+    UTF8,
     UTF16,
     UTF32
   };

Modified: vendor/clang/dist/include/clang/AST/ExprCXX.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/ExprCXX.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/ExprCXX.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -951,15 +951,9 @@ public:
 /// This wraps up a function call argument that was created from the
 /// corresponding parameter's default argument, when the call did not
 /// explicitly supply arguments for all of the parameters.
-class CXXDefaultArgExpr final
-    : public Expr,
-      private llvm::TrailingObjects<CXXDefaultArgExpr, Expr *> {
+class CXXDefaultArgExpr final : public Expr {
   /// \brief The parameter whose default is being used.
-  ///
-  /// When the bit is set, the subexpression is stored after the
-  /// CXXDefaultArgExpr itself. When the bit is clear, the parameter's
-  /// actual default expression is the subexpression.
-  llvm::PointerIntPair<ParmVarDecl *, 1, bool> Param;
+  ParmVarDecl *Param;
 
   /// \brief The location where the default argument expression was used.
   SourceLocation Loc;
@@ -971,16 +965,7 @@ class CXXDefaultArgExpr final
              : param->getDefaultArg()->getType(),
            param->getDefaultArg()->getValueKind(),
            param->getDefaultArg()->getObjectKind(), false, false, false, false),
-      Param(param, false), Loc(Loc) { }
-
-  CXXDefaultArgExpr(StmtClass SC, SourceLocation Loc, ParmVarDecl *param,
-                    Expr *SubExpr)
-    : Expr(SC, SubExpr->getType(),
-           SubExpr->getValueKind(), SubExpr->getObjectKind(),
-           false, false, false, false),
-      Param(param, true), Loc(Loc) {
-    *getTrailingObjects<Expr *>() = SubExpr;
-  }
+      Param(param), Loc(Loc) { }
 
 public:
   CXXDefaultArgExpr(EmptyShell Empty) : Expr(CXXDefaultArgExprClass, Empty) {}
@@ -992,24 +977,15 @@ public:
     return new (C) CXXDefaultArgExpr(CXXDefaultArgExprClass, Loc, Param);
   }
 
-  // \p Param is the parameter whose default argument is used by this
-  // expression, and \p SubExpr is the expression that will actually be used.
-  static CXXDefaultArgExpr *Create(const ASTContext &C, SourceLocation Loc,
-                                   ParmVarDecl *Param, Expr *SubExpr);
-
   // Retrieve the parameter that the argument was created from.
-  const ParmVarDecl *getParam() const { return Param.getPointer(); }
-  ParmVarDecl *getParam() { return Param.getPointer(); }
+  const ParmVarDecl *getParam() const { return Param; }
+  ParmVarDecl *getParam() { return Param; }
 
   // Retrieve the actual argument to the function call.
   const Expr *getExpr() const {
-    if (Param.getInt())
-      return *getTrailingObjects<Expr *>();
     return getParam()->getDefaultArg();
   }
   Expr *getExpr() {
-    if (Param.getInt())
-      return *getTrailingObjects<Expr *>();
     return getParam()->getDefaultArg();
   }
 
@@ -1033,7 +1009,6 @@ public:
     return child_range(child_iterator(), child_iterator());
   }
 
-  friend TrailingObjects;
   friend class ASTStmtReader;
   friend class ASTStmtWriter;
 };

Modified: vendor/clang/dist/include/clang/AST/OperationKinds.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/OperationKinds.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/OperationKinds.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -185,7 +185,11 @@ enum CastKind {
   /// CK_FloatingToBoolean - Floating point to boolean.
   ///    (bool) f
   CK_FloatingToBoolean,
-    
+
+  // CK_BooleanToSignedIntegral - Convert a boolean to -1 or 0 for true and
+  // false, respectively.
+  CK_BooleanToSignedIntegral,
+
   /// CK_FloatingCast - Casting between floating types of different size.
   ///    (double) f
   ///    (float) ld

Modified: vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/RecursiveASTVisitor.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -978,6 +978,8 @@ DEF_TRAVERSE_TYPE(ObjCObjectPointerType,
 
 DEF_TRAVERSE_TYPE(AtomicType, { TRY_TO(TraverseType(T->getValueType())); })
 
+DEF_TRAVERSE_TYPE(PipeType, { TRY_TO(TraverseType(T->getElementType())); })
+
 #undef DEF_TRAVERSE_TYPE
 
 // ----------------- TypeLoc traversal -----------------
@@ -1206,6 +1208,8 @@ DEF_TRAVERSE_TYPELOC(ObjCObjectPointerTy
 
 DEF_TRAVERSE_TYPELOC(AtomicType, { TRY_TO(TraverseTypeLoc(TL.getValueLoc())); })
 
+DEF_TRAVERSE_TYPELOC(PipeType, { TRY_TO(TraverseTypeLoc(TL.getValueLoc())); })
+
 #undef DEF_TRAVERSE_TYPELOC
 
 // ----------------- Decl traversal -----------------

Modified: vendor/clang/dist/include/clang/AST/Stmt.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/Stmt.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/Stmt.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -130,7 +130,7 @@ protected:
     friend class CharacterLiteral;
     unsigned : NumExprBits;
 
-    unsigned Kind : 2;
+    unsigned Kind : 3;
   };
 
   enum APFloatSemantics {

Modified: vendor/clang/dist/include/clang/AST/Type.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/Type.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/Type.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -1721,6 +1721,7 @@ public:
   bool isNDRangeT() const;                      // OpenCL ndrange_t
   bool isReserveIDT() const;                    // OpenCL reserve_id_t
 
+  bool isPipeType() const;                      // OpenCL pipe type
   bool isOpenCLSpecificType() const;            // Any OpenCL specific type
 
   /// Determines if this type, which must satisfy
@@ -5015,6 +5016,41 @@ class AtomicType : public Type, public l
   }
 };
 
+/// PipeType - OpenCL20.
+class PipeType : public Type, public llvm::FoldingSetNode {
+  QualType ElementType;
+
+  PipeType(QualType elemType, QualType CanonicalPtr) :
+    Type(Pipe, CanonicalPtr, elemType->isDependentType(),
+         elemType->isInstantiationDependentType(),
+         elemType->isVariablyModifiedType(),
+         elemType->containsUnexpandedParameterPack()),
+    ElementType(elemType) {}
+  friend class ASTContext;  // ASTContext creates these.
+
+public:
+
+  QualType getElementType() const { return ElementType; }
+
+  bool isSugared() const { return false; }
+
+  QualType desugar() const { return QualType(this, 0); }
+
+  void Profile(llvm::FoldingSetNodeID &ID) {
+    Profile(ID, getElementType());
+  }
+
+  static void Profile(llvm::FoldingSetNodeID &ID, QualType T) {
+    ID.AddPointer(T.getAsOpaquePtr());
+  }
+
+
+  static bool classof(const Type *T) {
+    return T->getTypeClass() == Pipe;
+  }
+
+};
+
 /// A qualifier set is used to build a set of qualifiers.
 class QualifierCollector : public Qualifiers {
 public:
@@ -5461,9 +5497,13 @@ inline bool Type::isImageType() const {
          isImage1dBufferT();
 }
 
+inline bool Type::isPipeType() const {
+  return isa<PipeType>(CanonicalType);
+}
+
 inline bool Type::isOpenCLSpecificType() const {
   return isSamplerT() || isEventT() || isImageType() || isClkEventT() ||
-         isQueueT() || isNDRangeT() || isReserveIDT();
+         isQueueT() || isNDRangeT() || isReserveIDT() || isPipeType();
 }
 
 inline bool Type::isTemplateTypeParmType() const {

Modified: vendor/clang/dist/include/clang/AST/TypeLoc.h
==============================================================================
--- vendor/clang/dist/include/clang/AST/TypeLoc.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/TypeLoc.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -2033,7 +2033,26 @@ public:
   }
 };
 
+struct PipeTypeLocInfo {
+  SourceLocation KWLoc;
+};
+
+class PipeTypeLoc : public ConcreteTypeLoc<UnqualTypeLoc, PipeTypeLoc, PipeType,
+                                           PipeTypeLocInfo> {
+public:
+  TypeLoc getValueLoc() const { return this->getInnerTypeLoc(); }
+
+  SourceRange getLocalSourceRange() const { return SourceRange(getKWLoc()); }
+
+  SourceLocation getKWLoc() const { return this->getLocalData()->KWLoc; }
+  void setKWLoc(SourceLocation Loc) { this->getLocalData()->KWLoc = Loc; }
 
+  void initializeLocal(ASTContext &Context, SourceLocation Loc) {
+    setKWLoc(Loc);
+  }
+
+  QualType getInnerType() const { return this->getTypePtr()->getElementType(); }
+};
 }
 
 #endif

Modified: vendor/clang/dist/include/clang/AST/TypeNodes.def
==============================================================================
--- vendor/clang/dist/include/clang/AST/TypeNodes.def	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/AST/TypeNodes.def	Wed Jan 13 20:00:46 2016	(r293840)
@@ -104,6 +104,7 @@ NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Pack
 TYPE(ObjCObject, Type)
 TYPE(ObjCInterface, ObjCObjectType)
 TYPE(ObjCObjectPointer, Type)
+TYPE(Pipe, Type)
 TYPE(Atomic, Type)
 
 #ifdef LAST_TYPE

Modified: vendor/clang/dist/include/clang/ASTMatchers/ASTMatchersInternal.h
==============================================================================
--- vendor/clang/dist/include/clang/ASTMatchers/ASTMatchersInternal.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/ASTMatchers/ASTMatchersInternal.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -560,10 +560,10 @@ bool matchesFirstInPointerRange(const Ma
 
 // Metafunction to determine if type T has a member called
 // getDecl.
-#if defined(_MSC_VER) && (_MSC_VER < 1900) && !defined(__clang__)
-// For old versions of MSVC, we use a weird nonstandard __if_exists
-// statement, since before MSVC2015, it was not standards-conformant
-// enough to compile the usual code below.
+#if defined(_MSC_VER) && !defined(__clang__)
+// For MSVC, we use a weird nonstandard __if_exists statement, as it
+// is not standards-conformant enough to properly compile the standard
+// code below. (At least up through MSVC 2015 require this workaround)
 template <typename T> struct has_getDecl {
   __if_exists(T::getDecl) {
     enum { value = 1 };

Modified: vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td
==============================================================================
--- vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/DiagnosticDriverKinds.td	Wed Jan 13 20:00:46 2016	(r293840)
@@ -22,6 +22,7 @@ def err_drv_unknown_stdin_type_clang_cl 
 def err_drv_unknown_language : Error<"language not recognized: '%0'">;
 def err_drv_invalid_arch_name : Error<
   "invalid arch name '%0'">;
+def err_drv_cuda_bad_gpu_arch : Error<"Unsupported CUDA gpu architecture: %0">;
 def err_drv_invalid_thread_model_for_target : Error<
   "invalid thread model '%0' in '%1' for this target">;
 def err_drv_invalid_linker_name : Error<

Modified: vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td
==============================================================================
--- vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td	Wed Jan 13 20:00:46 2016	(r293840)
@@ -616,6 +616,7 @@ def Most : DiagGroup<"most", [
     CharSubscript,
     Comment,
     DeleteNonVirtualDtor,
+    ForLoopAnalysis,
     Format,
     Implicit,
     InfiniteRecursion,

Modified: vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h
==============================================================================
--- vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/DiagnosticIDs.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -29,7 +29,7 @@ namespace clang {
     enum {
       DIAG_START_COMMON        =                                 0,
       DIAG_START_DRIVER        = DIAG_START_COMMON          +  300,
-      DIAG_START_FRONTEND      = DIAG_START_DRIVER          +  100,
+      DIAG_START_FRONTEND      = DIAG_START_DRIVER          +  200,
       DIAG_START_SERIALIZATION = DIAG_START_FRONTEND        +  100,
       DIAG_START_LEX           = DIAG_START_SERIALIZATION   +  120,
       DIAG_START_PARSE         = DIAG_START_LEX             +  300,

Modified: vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td
==============================================================================
--- vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/DiagnosticLexKinds.td	Wed Jan 13 20:00:46 2016	(r293840)
@@ -490,6 +490,8 @@ def warn_pragma_diagnostic_unknown_warni
 // - #pragma __debug
 def warn_pragma_debug_unexpected_command : Warning<
   "unexpected debug command '%0'">, InGroup<IgnoredPragmas>;
+def warn_pragma_debug_missing_argument : Warning<
+  "missing argument to debug command '%0'">, InGroup<IgnoredPragmas>;
 
 def err_defined_macro_name : Error<"'defined' cannot be used as a macro name">;
 def err_paste_at_start : Error<

Modified: vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td
==============================================================================
--- vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td	Wed Jan 13 20:00:46 2016	(r293840)
@@ -1,4 +1,3 @@
-
 //==--- DiagnosticSemaKinds.td - libsema diagnostics ----------------------===//
 //
 //                     The LLVM Compiler Infrastructure
@@ -7643,6 +7642,10 @@ def err_wrong_sampler_addressspace: Erro
   "sampler type cannot be used with the __local and __global address space qualifiers">;
 def err_opencl_global_invalid_addr_space : Error<
   "program scope variable must reside in %0 address space">;
+def err_missing_actual_pipe_type : Error<
+  "missing actual type specifier for pipe">;
+def err_reference_pipe_type : Error <
+  "pipes packet types cannot be of reference type">;
 def err_opencl_no_main : Error<"%select{function|kernel}0 cannot be called 'main'">;
 def err_opencl_kernel_attr :
   Error<"attribute %0 can only be applied to a kernel function">;

Modified: vendor/clang/dist/include/clang/Basic/Specifiers.h
==============================================================================
--- vendor/clang/dist/include/clang/Basic/Specifiers.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/Specifiers.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -36,6 +36,11 @@ namespace clang {
     TSS_unsigned
   };
   
+  enum TypeSpecifiersPipe {
+    TSP_unspecified,
+    TSP_pipe
+  };
+
   /// \brief Specifies the kind of type.
   enum TypeSpecifierType {
     TST_unspecified,

Modified: vendor/clang/dist/include/clang/Basic/TokenKinds.def
==============================================================================
--- vendor/clang/dist/include/clang/Basic/TokenKinds.def	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/TokenKinds.def	Wed Jan 13 20:00:46 2016	(r293840)
@@ -519,6 +519,8 @@ KEYWORD(vec_step                    , KE
 // OpenMP Type Traits
 KEYWORD(__builtin_omp_required_simd_align, KEYALL)
 
+KEYWORD(pipe                        , KEYOPENCL)
+
 // Borland Extensions.
 KEYWORD(__pascal                    , KEYALL)
 
@@ -697,6 +699,11 @@ ANNOTATION(pragma_parser_crash)
 // handles them.
 ANNOTATION(pragma_captured)
 
+// Annotation for #pragma clang __debug dump...
+// The lexer produces these so that the parser and semantic analysis can
+// look up and dump the operand.
+ANNOTATION(pragma_dump)
+
 // Annotation for #pragma ms_struct...
 // The lexer produces these so that they only take effect when the parser
 // handles them.

Modified: vendor/clang/dist/include/clang/Basic/VirtualFileSystem.h
==============================================================================
--- vendor/clang/dist/include/clang/Basic/VirtualFileSystem.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Basic/VirtualFileSystem.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -299,10 +299,7 @@ public:
   llvm::ErrorOr<std::string> getCurrentWorkingDirectory() const override {
     return WorkingDirectory;
   }
-  std::error_code setCurrentWorkingDirectory(const Twine &Path) override {
-    WorkingDirectory = Path.str();
-    return std::error_code();
-  }
+  std::error_code setCurrentWorkingDirectory(const Twine &Path) override;
 };
 
 /// \brief Get a globally unique ID for a virtual file or directory.

Modified: vendor/clang/dist/include/clang/CodeGen/BackendUtil.h
==============================================================================
--- vendor/clang/dist/include/clang/CodeGen/BackendUtil.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/CodeGen/BackendUtil.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -33,12 +33,10 @@ namespace clang {
     Backend_EmitObj        ///< Emit native object files
   };
 
-  void
-  EmitBackendOutput(DiagnosticsEngine &Diags, const CodeGenOptions &CGOpts,
-                    const TargetOptions &TOpts, const LangOptions &LOpts,
-                    StringRef TDesc, llvm::Module *M, BackendAction Action,
-                    raw_pwrite_stream *OS,
-                    std::unique_ptr<llvm::FunctionInfoIndex> Index = nullptr);
+  void EmitBackendOutput(DiagnosticsEngine &Diags, const CodeGenOptions &CGOpts,
+                         const TargetOptions &TOpts, const LangOptions &LOpts,
+                         StringRef TDesc, llvm::Module *M, BackendAction Action,
+                         raw_pwrite_stream *OS);
 }
 
 #endif

Modified: vendor/clang/dist/include/clang/Driver/Action.h
==============================================================================
--- vendor/clang/dist/include/clang/Driver/Action.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Driver/Action.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -15,6 +15,9 @@
 #include "llvm/ADT/SmallVector.h"
 
 namespace llvm {
+
+class StringRef;
+
 namespace opt {
   class Arg;
 }
@@ -32,6 +35,9 @@ namespace driver {
 /// single primary output, at least in terms of controlling the
 /// compilation. Actions can produce auxiliary files, but can only
 /// produce a single output to feed into subsequent actions.
+///
+/// Actions are usually owned by a Compilation, which creates new
+/// actions via MakeAction().
 class Action {
 public:
   typedef ActionList::size_type size_type;
@@ -70,27 +76,20 @@ private:
 
   ActionList Inputs;
 
-  unsigned OwnsInputs : 1;
-
 protected:
-  Action(ActionClass Kind, types::ID Type)
-    : Kind(Kind), Type(Type), OwnsInputs(true)  {}
-  Action(ActionClass Kind, std::unique_ptr<Action> Input, types::ID Type)
-      : Kind(Kind), Type(Type), Inputs(1, Input.release()), OwnsInputs(true) {
-  }
-  Action(ActionClass Kind, std::unique_ptr<Action> Input)
-      : Kind(Kind), Type(Input->getType()), Inputs(1, Input.release()),
-        OwnsInputs(true) {}
+  Action(ActionClass Kind, types::ID Type) : Action(Kind, ActionList(), Type) {}
+  Action(ActionClass Kind, Action *Input, types::ID Type)
+      : Action(Kind, ActionList({Input}), Type) {}
+  Action(ActionClass Kind, Action *Input)
+      : Action(Kind, ActionList({Input}), Input->getType()) {}
   Action(ActionClass Kind, const ActionList &Inputs, types::ID Type)
-    : Kind(Kind), Type(Type), Inputs(Inputs), OwnsInputs(true) {}
+      : Kind(Kind), Type(Type), Inputs(Inputs) {}
+
 public:
   virtual ~Action();
 
   const char *getClassName() const { return Action::getClassName(getKind()); }
 
-  bool getOwnsInputs() { return OwnsInputs; }
-  void setOwnsInputs(bool Value) { OwnsInputs = Value; }
-
   ActionClass getKind() const { return Kind; }
   types::ID getType() const { return Type; }
 
@@ -126,7 +125,7 @@ class BindArchAction : public Action {
   const char *ArchName;
 
 public:
-  BindArchAction(std::unique_ptr<Action> Input, const char *ArchName);
+  BindArchAction(Action *Input, const char *ArchName);
 
   const char *getArchName() const { return ArchName; }
 
@@ -137,19 +136,24 @@ public:
 
 class CudaDeviceAction : public Action {
   virtual void anchor();
-  /// GPU architecture to bind -- e.g 'sm_35'.
+  /// GPU architecture to bind.  Always of the form /sm_\d+/.
   const char *GpuArchName;
   /// True when action results are not consumed by the host action (e.g when
   /// -fsyntax-only or --cuda-device-only options are used).
   bool AtTopLevel;
 
 public:
-  CudaDeviceAction(std::unique_ptr<Action> Input, const char *ArchName,
-                   bool AtTopLevel);
+  CudaDeviceAction(Action *Input, const char *ArchName, bool AtTopLevel);
 
   const char *getGpuArchName() const { return GpuArchName; }
+
+  /// Gets the compute_XX that corresponds to getGpuArchName().
+  const char *getComputeArchName() const;
+
   bool isAtTopLevel() const { return AtTopLevel; }
 
+  static bool IsValidGpuArchName(llvm::StringRef ArchName);
+
   static bool classof(const Action *A) {
     return A->getKind() == CudaDeviceClass;
   }
@@ -160,9 +164,7 @@ class CudaHostAction : public Action {
   ActionList DeviceActions;
 
 public:
-  CudaHostAction(std::unique_ptr<Action> Input,
-                 const ActionList &DeviceActions);
-  ~CudaHostAction() override;
+  CudaHostAction(Action *Input, const ActionList &DeviceActions);
 
   const ActionList &getDeviceActions() const { return DeviceActions; }
 
@@ -172,7 +174,7 @@ public:
 class JobAction : public Action {
   virtual void anchor();
 protected:
-  JobAction(ActionClass Kind, std::unique_ptr<Action> Input, types::ID Type);
+  JobAction(ActionClass Kind, Action *Input, types::ID Type);
   JobAction(ActionClass Kind, const ActionList &Inputs, types::ID Type);
 
 public:
@@ -185,7 +187,7 @@ public:
 class PreprocessJobAction : public JobAction {
   void anchor() override;
 public:
-  PreprocessJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  PreprocessJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == PreprocessJobClass;
@@ -195,7 +197,7 @@ public:
 class PrecompileJobAction : public JobAction {
   void anchor() override;
 public:
-  PrecompileJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  PrecompileJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == PrecompileJobClass;
@@ -205,7 +207,7 @@ public:
 class AnalyzeJobAction : public JobAction {
   void anchor() override;
 public:
-  AnalyzeJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  AnalyzeJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == AnalyzeJobClass;
@@ -215,7 +217,7 @@ public:
 class MigrateJobAction : public JobAction {
   void anchor() override;
 public:
-  MigrateJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  MigrateJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == MigrateJobClass;
@@ -225,7 +227,7 @@ public:
 class CompileJobAction : public JobAction {
   void anchor() override;
 public:
-  CompileJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  CompileJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == CompileJobClass;
@@ -235,7 +237,7 @@ public:
 class BackendJobAction : public JobAction {
   void anchor() override;
 public:
-  BackendJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  BackendJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == BackendJobClass;
@@ -245,7 +247,7 @@ public:
 class AssembleJobAction : public JobAction {
   void anchor() override;
 public:
-  AssembleJobAction(std::unique_ptr<Action> Input, types::ID OutputType);
+  AssembleJobAction(Action *Input, types::ID OutputType);
 
   static bool classof(const Action *A) {
     return A->getKind() == AssembleJobClass;
@@ -285,8 +287,7 @@ public:
 class VerifyJobAction : public JobAction {
   void anchor() override;
 public:
-  VerifyJobAction(ActionClass Kind, std::unique_ptr<Action> Input,
-                  types::ID Type);
+  VerifyJobAction(ActionClass Kind, Action *Input, types::ID Type);
   static bool classof(const Action *A) {
     return A->getKind() == VerifyDebugInfoJobClass ||
            A->getKind() == VerifyPCHJobClass;
@@ -296,7 +297,7 @@ public:
 class VerifyDebugInfoJobAction : public VerifyJobAction {
   void anchor() override;
 public:
-  VerifyDebugInfoJobAction(std::unique_ptr<Action> Input, types::ID Type);
+  VerifyDebugInfoJobAction(Action *Input, types::ID Type);
   static bool classof(const Action *A) {
     return A->getKind() == VerifyDebugInfoJobClass;
   }
@@ -305,7 +306,7 @@ public:
 class VerifyPCHJobAction : public VerifyJobAction {
   void anchor() override;
 public:
-  VerifyPCHJobAction(std::unique_ptr<Action> Input, types::ID Type);
+  VerifyPCHJobAction(Action *Input, types::ID Type);
   static bool classof(const Action *A) {
     return A->getKind() == VerifyPCHJobClass;
   }

Modified: vendor/clang/dist/include/clang/Driver/Compilation.h
==============================================================================
--- vendor/clang/dist/include/clang/Driver/Compilation.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Driver/Compilation.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -48,7 +48,12 @@ class Compilation {
   /// own argument translation.
   llvm::opt::DerivedArgList *TranslatedArgs;
 
-  /// The list of actions.
+  /// The list of actions we've created via MakeAction.  This is not accessible
+  /// to consumers; it's here just to manage ownership.
+  std::vector<std::unique_ptr<Action>> AllActions;
+
+  /// The list of actions.  This is maintained and modified by consumers, via
+  /// getActions().
   ActionList Actions;
 
   /// The root list of jobs.
@@ -105,6 +110,15 @@ public:
   ActionList &getActions() { return Actions; }
   const ActionList &getActions() const { return Actions; }
 
+  /// Creates a new Action owned by this Compilation.
+  ///
+  /// The new Action is *not* added to the list returned by getActions().
+  template <typename T, typename... Args> T *MakeAction(Args &&... Arg) {
+    T *RawPtr = new T(std::forward<Args>(Arg)...);
+    AllActions.push_back(std::unique_ptr<Action>(RawPtr));
+    return RawPtr;
+  }
+
   JobList &getJobs() { return Jobs; }
   const JobList &getJobs() const { return Jobs; }
 

Modified: vendor/clang/dist/include/clang/Driver/Driver.h
==============================================================================
--- vendor/clang/dist/include/clang/Driver/Driver.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Driver/Driver.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -18,10 +18,10 @@
 #include "llvm/ADT/StringMap.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/Triple.h"
-#include "llvm/Support/Path.h" // FIXME: Kill when CompilationInfo
-#include <memory>
-                              // lands.
+#include "llvm/Support/Path.h" // FIXME: Kill when CompilationInfo lands.
+
 #include <list>
+#include <memory>
 #include <set>
 #include <string>
 
@@ -375,20 +375,16 @@ public:
   /// ConstructAction - Construct the appropriate action to do for
   /// \p Phase on the \p Input, taking in to account arguments
   /// like -fsyntax-only or --analyze.
-  std::unique_ptr<Action>
-  ConstructPhaseAction(const ToolChain &TC, const llvm::opt::ArgList &Args,
-                       phases::ID Phase, std::unique_ptr<Action> Input) const;
+  Action *ConstructPhaseAction(Compilation &C, const ToolChain &TC,
+                               const llvm::opt::ArgList &Args, phases::ID Phase,
+                               Action *Input) const;
 
   /// BuildJobsForAction - Construct the jobs to perform for the
-  /// action \p A.
-  void BuildJobsForAction(Compilation &C,
-                          const Action *A,
-                          const ToolChain *TC,
-                          const char *BoundArch,
-                          bool AtTopLevel,
-                          bool MultipleArchs,
-                          const char *LinkingOutput,
-                          InputInfo &Result) const;
+  /// action \p A and return an InputInfo for the result of running \p A.
+  InputInfo BuildJobsForAction(Compilation &C, const Action *A,
+                               const ToolChain *TC, const char *BoundArch,
+                               bool AtTopLevel, bool MultipleArchs,
+                               const char *LinkingOutput) const;
 
   /// Returns the default name for linked images (e.g., "a.out").
   const char *getDefaultImageName() const;

Modified: vendor/clang/dist/include/clang/Driver/Options.td
==============================================================================
--- vendor/clang/dist/include/clang/Driver/Options.td	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Driver/Options.td	Wed Jan 13 20:00:46 2016	(r293840)
@@ -1906,13 +1906,13 @@ def _ : Joined<["--"], "">, Flags<[Unsup
 
 def mieee_rnd_near : Flag<["-"], "mieee-rnd-near">, Group<m_hexagon_Features_Group>;
 def mv4 : Flag<["-"], "mv4">, Group<m_hexagon_Features_Group>,
-          Alias<mcpu_EQ>, AliasArgs<["v4"]>;
+          Alias<mcpu_EQ>, AliasArgs<["hexagonv4"]>;
 def mv5 : Flag<["-"], "mv5">, Group<m_hexagon_Features_Group>, Alias<mcpu_EQ>,
-          AliasArgs<["v5"]>;
+          AliasArgs<["hexagonv5"]>;
 def mv55 : Flag<["-"], "mv55">, Group<m_hexagon_Features_Group>,
-           Alias<mcpu_EQ>, AliasArgs<["v55"]>;
+           Alias<mcpu_EQ>, AliasArgs<["hexagonv55"]>;
 def mv60 : Flag<["-"], "mv60">, Group<m_hexagon_Features_Group>,
-           Alias<mcpu_EQ>, AliasArgs<["v60"]>;
+           Alias<mcpu_EQ>, AliasArgs<["hexagonv60"]>;
 def mhexagon_hvx : Flag<["-"], "mhvx">, Group<m_hexagon_Features_Group>,
     Flags<[CC1Option]>, HelpText<"Enable Hexagon Vector eXtensions">;
 def mno_hexagon_hvx : Flag<["-"], "mno-hvx">, Group<m_hexagon_Features_Group>,

Modified: vendor/clang/dist/include/clang/Driver/ToolChain.h
==============================================================================
--- vendor/clang/dist/include/clang/Driver/ToolChain.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Driver/ToolChain.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -134,7 +134,7 @@ public:
   StringRef getOS() const { return Triple.getOSName(); }
 
   /// \brief Provide the default architecture name (as expected by -arch) for
-  /// this toolchain. Note t
+  /// this toolchain.
   StringRef getDefaultUniversalArchName() const;
 
   std::string getTripleString() const {

Modified: vendor/clang/dist/include/clang/Lex/LiteralSupport.h
==============================================================================
--- vendor/clang/dist/include/clang/Lex/LiteralSupport.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Lex/LiteralSupport.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -166,6 +166,7 @@ public:
   bool hadError() const { return HadError; }
   bool isAscii() const { return Kind == tok::char_constant; }
   bool isWide() const { return Kind == tok::wide_char_constant; }
+  bool isUTF8() const { return Kind == tok::utf8_char_constant; }
   bool isUTF16() const { return Kind == tok::utf16_char_constant; }
   bool isUTF32() const { return Kind == tok::utf32_char_constant; }
   bool isMultiChar() const { return IsMultiChar; }

Modified: vendor/clang/dist/include/clang/Parse/Parser.h
==============================================================================
--- vendor/clang/dist/include/clang/Parse/Parser.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Parse/Parser.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -502,6 +502,10 @@ private:
   void HandlePragmaAlign();
 
   /// \brief Handle the annotation token produced for
+  /// #pragma clang __debug dump...
+  void HandlePragmaDump();
+
+  /// \brief Handle the annotation token produced for
   /// #pragma weak id...
   void HandlePragmaWeak();
 
@@ -1640,13 +1644,22 @@ private:
   /// A SmallVector of types.
   typedef SmallVector<ParsedType, 12> TypeVector;
 
-  StmtResult ParseStatement(SourceLocation *TrailingElseLoc = nullptr);
+  StmtResult ParseStatement(SourceLocation *TrailingElseLoc = nullptr,
+                            bool AllowOpenMPStandalone = false);
+  enum AllowedContsructsKind {
+    /// \brief Allow any declarations, statements, OpenMP directives.
+    ACK_Any,
+    /// \brief Allow only statements and non-standalone OpenMP directives.
+    ACK_StatementsOpenMPNonStandalone,
+    /// \brief Allow statements and all executable OpenMP directives
+    ACK_StatementsOpenMPAnyExecutable
+  };
   StmtResult
-  ParseStatementOrDeclaration(StmtVector &Stmts, bool OnlyStatement,
+  ParseStatementOrDeclaration(StmtVector &Stmts, AllowedContsructsKind Allowed,
                               SourceLocation *TrailingElseLoc = nullptr);
   StmtResult ParseStatementOrDeclarationAfterAttributes(
                                          StmtVector &Stmts,
-                                         bool OnlyStatement,
+                                         AllowedContsructsKind Allowed,
                                          SourceLocation *TrailingElseLoc,
                                          ParsedAttributesWithRange &Attrs);
   StmtResult ParseExprStatement();
@@ -1674,7 +1687,8 @@ private:
   StmtResult ParseReturnStatement();
   StmtResult ParseAsmStatement(bool &msAsm);
   StmtResult ParseMicrosoftAsmStatement(SourceLocation AsmLoc);
-  StmtResult ParsePragmaLoopHint(StmtVector &Stmts, bool OnlyStatement,
+  StmtResult ParsePragmaLoopHint(StmtVector &Stmts,
+                                 AllowedContsructsKind Allowed,
                                  SourceLocation *TrailingElseLoc,
                                  ParsedAttributesWithRange &Attrs);
 
@@ -2439,11 +2453,13 @@ private:
                                 bool AllowScopeSpecifier);
   /// \brief Parses declarative or executable directive.
   ///
-  /// \param StandAloneAllowed true if allowed stand-alone directives,
-  /// false - otherwise
+  /// \param Allowed ACK_Any, if any directives are allowed,
+  /// ACK_StatementsOpenMPAnyExecutable - if any executable directives are
+  /// allowed, ACK_StatementsOpenMPNonStandalone - if only non-standalone
+  /// executable directives are allowed.
   ///
   StmtResult
-  ParseOpenMPDeclarativeOrExecutableDirective(bool StandAloneAllowed);
+  ParseOpenMPDeclarativeOrExecutableDirective(AllowedContsructsKind Allowed);
   /// \brief Parses clause of kind \a CKind for directive of a kind \a Kind.
   ///
   /// \param DKind Kind of current directive.

Modified: vendor/clang/dist/include/clang/Sema/DeclSpec.h
==============================================================================
--- vendor/clang/dist/include/clang/Sema/DeclSpec.h	Wed Jan 13 19:58:38 2016	(r293839)
+++ vendor/clang/dist/include/clang/Sema/DeclSpec.h	Wed Jan 13 20:00:46 2016	(r293840)
@@ -337,6 +337,7 @@ private:
   unsigned TypeAltiVecPixel : 1;
   unsigned TypeAltiVecBool : 1;
   unsigned TypeSpecOwned : 1;
+  unsigned TypeSpecPipe : 1;
 
   // type-qualifiers
   unsigned TypeQualifiers : 4;  // Bitwise OR of TQ.
@@ -385,6 +386,7 @@ private:
   SourceLocation FS_inlineLoc, FS_virtualLoc, FS_explicitLoc, FS_noreturnLoc;
   SourceLocation FS_forceinlineLoc;
   SourceLocation FriendLoc, ModulePrivateLoc, ConstexprLoc, ConceptLoc;
+  SourceLocation TQ_pipeLoc;
 
   WrittenBuiltinSpecs writtenBS;
   void SaveWrittenBuiltinSpecs();
@@ -420,6 +422,7 @@ public:
       TypeAltiVecPixel(false),
       TypeAltiVecBool(false),
       TypeSpecOwned(false),
+      TypeSpecPipe(false),
       TypeQualifiers(TQ_unspecified),
       FS_inline_specified(false),
       FS_forceinline_specified(false),
@@ -473,6 +476,7 @@ public:
   bool isTypeAltiVecBool() const { return TypeAltiVecBool; }
   bool isTypeSpecOwned() const { return TypeSpecOwned; }
   bool isTypeRep() const { return isTypeRep((TST) TypeSpecType); }
+  bool isTypeSpecPipe() const { return TypeSpecPipe; }
 
   ParsedType getRepAsType() const {
     assert(isTypeRep((TST) TypeSpecType) && "DeclSpec does not store a type");
@@ -532,6 +536,7 @@ public:
   SourceLocation getRestrictSpecLoc() const { return TQ_restrictLoc; }
   SourceLocation getVolatileSpecLoc() const { return TQ_volatileLoc; }
   SourceLocation getAtomicSpecLoc() const { return TQ_atomicLoc; }
+  SourceLocation getPipeLoc() const { return TQ_pipeLoc; }
 
   /// \brief Clear out all of the type qualifiers.
   void ClearTypeQualifiers() {
@@ -540,6 +545,7 @@ public:
     TQ_restrictLoc = SourceLocation();
     TQ_volatileLoc = SourceLocation();
     TQ_atomicLoc = SourceLocation();
+    TQ_pipeLoc = SourceLocation();
   }
 
   // function-specifier
@@ -643,6 +649,9 @@ public:
   bool SetTypeAltiVecBool(bool isAltiVecBool, SourceLocation Loc,
                        const char *&PrevSpec, unsigned &DiagID,
                        const PrintingPolicy &Policy);
+  bool SetTypePipe(bool isPipe, SourceLocation Loc,
+                       const char *&PrevSpec, unsigned &DiagID,
+                       const PrintingPolicy &Policy);
   bool SetTypeSpecError();
   void UpdateDeclRep(Decl *Rep) {
     assert(isDeclRep((TST) TypeSpecType));
@@ -1081,7 +1090,7 @@ typedef SmallVector<Token, 4> CachedToke
 /// This is intended to be a small value object.
 struct DeclaratorChunk {
   enum {
-    Pointer, Reference, Array, Function, BlockPointer, MemberPointer, Paren
+    Pointer, Reference, Array, Function, BlockPointer, MemberPointer, Paren, Pipe
   } Kind;
 
   /// Loc - The place where this type was defined.
@@ -1409,6 +1418,13 @@ struct DeclaratorChunk {
     }
   };
 
+  struct PipeTypeInfo : TypeInfoCommon {
+  /// The access writes.
+  unsigned AccessWrites : 3;
+
+  void destroy() {}
+  };
+
   union {
     TypeInfoCommon        Common;
     PointerTypeInfo       Ptr;
@@ -1417,6 +1433,7 @@ struct DeclaratorChunk {
     FunctionTypeInfo      Fun;
     BlockPointerTypeInfo  Cls;
     MemberPointerTypeInfo Mem;
+    PipeTypeInfo          PipeInfo;
   };
 
   void destroy() {
@@ -1428,6 +1445,7 @@ struct DeclaratorChunk {
     case DeclaratorChunk::Array:         return Arr.destroy();
     case DeclaratorChunk::MemberPointer: return Mem.destroy();
     case DeclaratorChunk::Paren:         return;
+    case DeclaratorChunk::Pipe:          return PipeInfo.destroy();
     }
   }
 
@@ -1526,6 +1544,17 @@ struct DeclaratorChunk {
     return I;
   }
 
+  /// \brief Return a DeclaratorChunk for a block.
+  static DeclaratorChunk getPipe(unsigned TypeQuals,
+                                 SourceLocation Loc) {
+    DeclaratorChunk I;
+    I.Kind          = Pipe;
+    I.Loc           = Loc;
+    I.Cls.TypeQuals = TypeQuals;
+    I.Cls.AttrList  = 0;
+    return I;
+  }
+
   static DeclaratorChunk getMemberPointer(const CXXScopeSpec &SS,
                                           unsigned TypeQuals,
                                           SourceLocation Loc) {
@@ -2026,6 +2055,7 @@ public:

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



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