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/...
Dimitry Andric
dim at FreeBSD.org
Wed Jan 13 20:00:51 UTC 2016
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 ***
More information about the svn-src-vendor
mailing list