From owner-svn-src-projects@freebsd.org Thu Feb 27 19:04:45 2020 Return-Path: Delivered-To: svn-src-projects@mailman.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.nyi.freebsd.org (Postfix) with ESMTP id A361124B2F9 for ; Thu, 27 Feb 2020 19:04:45 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) server-signature RSA-PSS (4096 bits) client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 48T2Cx4Pqjz4537; Thu, 27 Feb 2020 19:04:45 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 8969D1D70D; Thu, 27 Feb 2020 19:04:45 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id 01RJ4jDG018177; Thu, 27 Feb 2020 19:04:45 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id 01RJ4dIZ018149; Thu, 27 Feb 2020 19:04:39 GMT (envelope-from dim@FreeBSD.org) Message-Id: <202002271904.01RJ4dIZ018149@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Thu, 27 Feb 2020 19:04:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r358399 - in projects/clang1000-import: contrib/llvm-project/clang/include/clang/Basic contrib/llvm-project/clang/include/clang/Sema contrib/llvm-project/clang/lib/ASTMatchers contrib/l... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang1000-import: contrib/llvm-project/clang/include/clang/Basic contrib/llvm-project/clang/include/clang/Sema contrib/llvm-project/clang/lib/ASTMatchers contrib/llvm-project/clang/lib/Cod... X-SVN-Commit-Revision: 358399 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 27 Feb 2020 19:04:45 -0000 Author: dim Date: Thu Feb 27 19:04:39 2020 New Revision: 358399 URL: https://svnweb.freebsd.org/changeset/base/358399 Log: Merge ^/vendor/llvm-project/release-10.x up to its last change (upstream commit llvmorg-10.0.0-rc2-70-ge5cb70267e7), and bump versions. Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticASTKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticFrontendKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticGroups.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticLexKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticParseKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/LangStandards.def projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/StmtNodes.td projects/clang1000-import/contrib/llvm-project/clang/include/clang/Sema/TemplateDeduction.h projects/clang1000-import/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Clang.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReader.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReaderDecl.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriter.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriterDecl.cpp projects/clang1000-import/contrib/llvm-project/clang/lib/Tooling/ArgumentsAdjusters.cpp projects/clang1000-import/contrib/llvm-project/compiler-rt/lib/profile/GCDAProfiling.c projects/clang1000-import/contrib/llvm-project/libcxx/include/__bit_reference projects/clang1000-import/contrib/llvm-project/lld/docs/ReleaseNotes.rst projects/clang1000-import/contrib/llvm-project/lldb/source/Expression/DWARFExpression.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Analysis/MemorySSA.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64ISelLowering.h projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64InstrFormats.td projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/AArch64/AArch64InstrInfo.td projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/AMDGPU/SIPeepholeSDWA.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/ARM/ARMISelLowering.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/ARM/ARMISelLowering.h projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/ARM/ARMInstrVFP.td projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Target/X86/X86CmovConversion.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Transforms/Scalar/LICM.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Transforms/Scalar/LoopRotation.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp projects/clang1000-import/contrib/llvm-project/llvm/lib/Transforms/Vectorize/SLPVectorizer.cpp projects/clang1000-import/contrib/llvm-project/llvm/utils/TableGen/DFAEmitter.cpp projects/clang1000-import/contrib/llvm-project/llvm/utils/TableGen/DFAEmitter.h projects/clang1000-import/lib/clang/include/VCSVersion.inc projects/clang1000-import/lib/clang/include/llvm/Support/VCSRevision.h Directory Properties: projects/clang1000-import/contrib/llvm-project/ (props changed) projects/clang1000-import/contrib/llvm-project/clang/ (props changed) projects/clang1000-import/contrib/llvm-project/compiler-rt/ (props changed) projects/clang1000-import/contrib/llvm-project/libcxx/ (props changed) projects/clang1000-import/contrib/llvm-project/lld/ (props changed) projects/clang1000-import/contrib/llvm-project/lldb/ (props changed) projects/clang1000-import/contrib/llvm-project/llvm/ (props changed) Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticASTKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticASTKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticASTKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -13,7 +13,7 @@ def note_expr_divide_by_zero : Note<"division by zero" def note_constexpr_invalid_cast : Note< "%select{reinterpret_cast|dynamic_cast|cast that performs the conversions of" " a reinterpret_cast|cast from %1}0 is not allowed in a constant expression" - "%select{| in C++ standards before C++2a||}0">; + "%select{| in C++ standards before C++20||}0">; def note_constexpr_invalid_downcast : Note< "cannot cast object of dynamic type %0 to type %1">; def note_constexpr_overflow : Note< @@ -33,7 +33,7 @@ def note_constexpr_no_return : Note< "control reached end of constexpr function">; def note_constexpr_virtual_call : Note< "cannot evaluate call to virtual function in a constant expression " - "in C++ standards before C++2a">; + "in C++ standards before C++20">; def note_constexpr_pure_virtual_call : Note< "pure virtual function %q0 called">; def note_constexpr_polymorphic_unknown_dynamic_type : Note< @@ -102,7 +102,7 @@ def note_constexpr_var_init_non_constant : Note< "initializer of %0 is not a constant expression">; def note_constexpr_typeid_polymorphic : Note< "typeid applied to expression of polymorphic type %0 is " - "not allowed in a constant expression in C++ standards before C++2a">; + "not allowed in a constant expression in C++ standards before C++20">; def note_constexpr_void_comparison : Note< "comparison between unequal pointers to void has unspecified result">; def note_constexpr_temporary_here : Note<"temporary created here">; Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticCommonKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -120,7 +120,7 @@ def err_enum_template : Error<"enumeration cannot be a def warn_cxx20_compat_consteval : Warning< "'consteval' specifier is incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; } Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDriverKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDriverKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticDriverKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -271,6 +271,9 @@ def warn_drv_unsupported_debug_info_opt_for_target : W InGroup; def warn_c_kext : Warning< "ignoring -fapple-kext which is valid for C++ and Objective-C++ only">; +def warn_ignoring_fdiscard_for_bitcode : Warning< + "ignoring -fdiscard-value-names for LLVM Bitcode">, + InGroup; def warn_drv_input_file_unused : Warning< "%0: '%1' input unused%select{ when '%3' is present|}2">, InGroup; Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticFrontendKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticFrontendKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticFrontendKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -106,7 +106,7 @@ def err_fe_invalid_wchar_type def err_fe_invalid_exception_model : Error<"invalid exception model '%0' for target '%1'">; def warn_fe_concepts_ts_flag : Warning< - "-fconcepts-ts is deprecated - use '-std=c++2a' for Concepts support">, + "-fconcepts-ts is deprecated - use '-std=c++20' for Concepts support">, InGroup; def warn_fe_serialized_diag_merge_failure : Warning< @@ -175,9 +175,9 @@ def note_incompatible_analyzer_plugin_api : Note< def err_module_build_requires_fmodules : Error< "module compilation requires '-fmodules'">; def err_module_interface_requires_cpp_modules : Error< - "module interface compilation requires '-std=c++2a' or '-fmodules-ts'">; + "module interface compilation requires '-std=c++20' or '-fmodules-ts'">; def err_header_module_requires_modules : Error< - "header module compilation requires '-fmodules', '-std=c++2a', or " + "header module compilation requires '-fmodules', '-std=c++20', or " "'-fmodules-ts'">; def warn_module_config_mismatch : Warning< "module file %0 cannot be loaded due to a configuration mismatch with the current " Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticGroups.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticGroups.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticGroups.td Thu Feb 27 19:04:39 2020 (r358399) @@ -187,10 +187,10 @@ def Deprecated : DiagGroup<"deprecated", [DeprecatedAn DeprecatedWritableStr]>, DiagCategory<"Deprecations">; -def CXX2aDesignator : DiagGroup<"c++2a-designator">; +def CXX20Designator : DiagGroup<"c++20-designator">; // Allow -Wno-c99-designator to be used to turn off all warnings on valid C99 -// designators (including the warning controlled by -Wc++2a-designator). -def C99Designator : DiagGroup<"c99-designator", [CXX2aDesignator]>; +// designators (including the warning controlled by -Wc++20-designator). +def C99Designator : DiagGroup<"c99-designator", [CXX20Designator]>; def GNUDesignator : DiagGroup<"gnu-designator">; def DynamicExceptionSpec @@ -246,9 +246,9 @@ def CXXPre14CompatPedantic : DiagGroup<"c++98-c++11-co def CXXPre17Compat : DiagGroup<"c++98-c++11-c++14-compat">; def CXXPre17CompatPedantic : DiagGroup<"c++98-c++11-c++14-compat-pedantic", [CXXPre17Compat]>; -def CXXPre2aCompat : DiagGroup<"c++98-c++11-c++14-c++17-compat">; -def CXXPre2aCompatPedantic : DiagGroup<"c++98-c++11-c++14-c++17-compat-pedantic", - [CXXPre2aCompat]>; +def CXXPre20Compat : DiagGroup<"c++98-c++11-c++14-c++17-compat">; +def CXXPre20CompatPedantic : DiagGroup<"c++98-c++11-c++14-c++17-compat-pedantic", + [CXXPre20Compat]>; def CXX98CompatBindToTemporaryCopy : DiagGroup<"c++98-compat-bind-to-temporary-copy">; @@ -262,7 +262,7 @@ def CXX98Compat : DiagGroup<"c++98-compat", CXX98CompatUnnamedTypeTemplateArgs, CXXPre14Compat, CXXPre17Compat, - CXXPre2aCompat]>; + CXXPre20Compat]>; // Warnings for C++11 features which are Extensions in C++98 mode. def CXX98CompatPedantic : DiagGroup<"c++98-compat-pedantic", [CXX98Compat, @@ -270,7 +270,7 @@ def CXX98CompatPedantic : DiagGroup<"c++98-compat-peda CXX98CompatExtraSemi, CXXPre14CompatPedantic, CXXPre17CompatPedantic, - CXXPre2aCompatPedantic]>; + CXXPre20CompatPedantic]>; def CXX11Narrowing : DiagGroup<"c++11-narrowing">; @@ -296,33 +296,35 @@ def CXX11Compat : DiagGroup<"c++11-compat", CXX11CompatDeprecatedWritableStr, CXXPre14Compat, CXXPre17Compat, - CXXPre2aCompat]>; + CXXPre20Compat]>; def : DiagGroup<"c++0x-compat", [CXX11Compat]>; def CXX11CompatPedantic : DiagGroup<"c++11-compat-pedantic", [CXX11Compat, CXXPre14CompatPedantic, CXXPre17CompatPedantic, - CXXPre2aCompatPedantic]>; + CXXPre20CompatPedantic]>; def CXX14Compat : DiagGroup<"c++14-compat", [CXXPre17Compat, - CXXPre2aCompat]>; + CXXPre20Compat]>; def CXX14CompatPedantic : DiagGroup<"c++14-compat-pedantic", [CXX14Compat, CXXPre17CompatPedantic, - CXXPre2aCompatPedantic]>; + CXXPre20CompatPedantic]>; def CXX17Compat : DiagGroup<"c++17-compat", [DeprecatedRegister, DeprecatedIncrementBool, CXX17CompatMangling, - CXXPre2aCompat]>; + CXXPre20Compat]>; def CXX17CompatPedantic : DiagGroup<"c++17-compat-pedantic", [CXX17Compat, - CXXPre2aCompatPedantic]>; + CXXPre20CompatPedantic]>; def : DiagGroup<"c++1z-compat", [CXX17Compat]>; -def CXX2aCompat : DiagGroup<"c++2a-compat">; -def CXX2aCompatPedantic : DiagGroup<"c++2a-compat-pedantic", - [CXX2aCompat]>; +def CXX20Compat : DiagGroup<"c++20-compat">; +def CXX20CompatPedantic : DiagGroup<"c++20-compat-pedantic", + [CXX20Compat]>; +def : DiagGroup<"c++2a-compat", [CXX20Compat]>; +def : DiagGroup<"c++2a-compat-pedantic", [CXX20CompatPedantic]>; def ExitTimeDestructors : DiagGroup<"exit-time-destructors">; def FlexibleArrayExtensions : DiagGroup<"flexible-array-extensions">; @@ -955,13 +957,14 @@ def CXX14 : DiagGroup<"c++14-extensions", [CXX14Binary // earlier C++ versions. def CXX17 : DiagGroup<"c++17-extensions">; -// A warning group for warnings about using C++2a features as extensions in +// A warning group for warnings about using C++20 features as extensions in // earlier C++ versions. -def CXX2a : DiagGroup<"c++2a-extensions", [CXX2aDesignator]>; +def CXX20 : DiagGroup<"c++20-extensions", [CXX20Designator]>; def : DiagGroup<"c++0x-extensions", [CXX11]>; def : DiagGroup<"c++1y-extensions", [CXX14]>; def : DiagGroup<"c++1z-extensions", [CXX17]>; +def : DiagGroup<"c++2a-extensions", [CXX20]>; def DelegatingCtorCycles : DiagGroup<"delegating-ctor-cycles">; @@ -1011,7 +1014,8 @@ def MicrosoftExplicitConstructorCall : DiagGroup< def MicrosoftEnumValue : DiagGroup<"microsoft-enum-value">; def MicrosoftDefaultArgRedefinition : DiagGroup<"microsoft-default-arg-redefinition">; -def MicrosoftTemplate : DiagGroup<"microsoft-template">; +def MicrosoftTemplateShadow : DiagGroup<"microsoft-template-shadow">; +def MicrosoftTemplate : DiagGroup<"microsoft-template", [MicrosoftTemplateShadow]>; def MicrosoftInconsistentDllImport : DiagGroup<"inconsistent-dllimport">; def MicrosoftRedeclareStatic : DiagGroup<"microsoft-redeclare-static">; def MicrosoftEnumForwardReference : Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticLexKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticLexKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticLexKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -31,12 +31,12 @@ def warn_cxx98_compat_less_colon_colon : Warning< InGroup, DefaultIgnore; def warn_cxx17_compat_spaceship : Warning< - "'<=>' operator is incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; + "'<=>' operator is incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; def warn_cxx2a_compat_spaceship : Warning< - "'<=>' is a single token in C++2a; " + "'<=>' is a single token in C++20; " "add a space to avoid a change in behavior">, - InGroup; + InGroup; // Trigraphs. def trigraph_ignored : Warning<"trigraph ignored">, InGroup; @@ -78,8 +78,8 @@ def ext_token_used : Extension<"extension used">, def warn_cxx11_keyword : Warning<"'%0' is a keyword in C++11">, InGroup, DefaultIgnore; -def warn_cxx2a_keyword : Warning<"'%0' is a keyword in C++2a">, - InGroup, DefaultIgnore; +def warn_cxx2a_keyword : Warning<"'%0' is a keyword in C++20">, + InGroup, DefaultIgnore; def ext_unterminated_char_or_string : ExtWarn< "missing terminating %select{'|'\"'}0 character">, InGroup; Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticParseKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticParseKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticParseKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -241,10 +241,10 @@ def warn_cxx14_compat_nested_namespace_definition : Wa "nested namespace definition is incompatible with C++ standards before C++17">, InGroup, DefaultIgnore; def ext_inline_nested_namespace_definition : ExtWarn< - "inline nested namespace definition is a C++2a extension">, InGroup; + "inline nested namespace definition is a C++20 extension">, InGroup; def warn_cxx17_compat_inline_nested_namespace_definition : Warning< "inline nested namespace definition is incompatible with C++ standards before" - " C++2a">, InGroup, DefaultIgnore; + " C++20">, InGroup, DefaultIgnore; def err_inline_nested_namespace_definition : Error< "nested namespace definition cannot be 'inline'">; def err_expected_semi_after_attribute_list : Error< @@ -589,11 +589,11 @@ def warn_cxx14_compat_init_statement : Warning< "%select{if|switch}0 initialization statements are incompatible with " "C++ standards before C++17">, DefaultIgnore, InGroup; def ext_for_range_init_stmt : ExtWarn< - "range-based for loop initialization statements are a C++2a extension">, - InGroup; + "range-based for loop initialization statements are a C++20 extension">, + InGroup; def warn_cxx17_compat_for_range_init_stmt : Warning< "range-based for loop initialization statements are incompatible with " - "C++ standards before C++2a">, DefaultIgnore, InGroup; + "C++ standards before C++20">, DefaultIgnore, InGroup; def warn_empty_init_statement : Warning< "empty initialization statement of '%select{if|switch|range-based for}0' " "has no effect">, InGroup, DefaultIgnore; @@ -681,13 +681,13 @@ def err_ms_property_initializer : Error< "property declaration cannot have an in-class initializer">; def warn_cxx2a_compat_explicit_bool : Warning< - "this expression will be parsed as explicit(bool) in C++2a">, - InGroup, DefaultIgnore; + "this expression will be parsed as explicit(bool) in C++20">, + InGroup, DefaultIgnore; def warn_cxx17_compat_explicit_bool : Warning< - "explicit(bool) is incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; -def ext_explicit_bool : ExtWarn<"explicit(bool) is a C++2a extension">, - InGroup; + "explicit(bool) is incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; +def ext_explicit_bool : ExtWarn<"explicit(bool) is a C++20 extension">, + InGroup; /// C++ Templates def err_expected_template : Error<"expected template">; @@ -844,11 +844,11 @@ def warn_cxx98_compat_nonstatic_member_init : Warning< "in-class initialization of non-static data members is incompatible with C++98">, InGroup, DefaultIgnore; def ext_bitfield_member_init: ExtWarn< - "default member initializer for bit-field is a C++2a extension">, - InGroup; + "default member initializer for bit-field is a C++20 extension">, + InGroup; def warn_cxx17_compat_bitfield_member_init: Warning< "default member initializer for bit-field is incompatible with " - "C++ standards before C++2a">, InGroup, DefaultIgnore; + "C++ standards before C++20">, InGroup, DefaultIgnore; def err_incomplete_array_member_init: Error< "array bound cannot be deduced from an in-class initializer">; @@ -944,13 +944,13 @@ def warn_cxx14_compat_constexpr_on_lambda : Warning< def ext_constexpr_on_lambda_cxx17 : ExtWarn< "'constexpr' on lambda expressions is a C++17 extension">, InGroup; -// C++2a template lambdas +// C++20 template lambdas def ext_lambda_template_parameter_list: ExtWarn< - "explicit template parameter list for lambdas is a C++2a extension">, - InGroup; + "explicit template parameter list for lambdas is a C++20 extension">, + InGroup; def warn_cxx17_compat_lambda_template_parameter_list: Warning< "explicit template parameter list for lambdas is incompatible with " - "C++ standards before C++2a">, InGroup, DefaultIgnore; + "C++ standards before C++20">, InGroup, DefaultIgnore; def err_lambda_template_parameter_list_empty : Error< "lambda template parameter list cannot be empty">; @@ -1369,7 +1369,7 @@ let CategoryName = "Concepts Issue" in { def err_concept_definition_not_identifier : Error< "name defined in concept definition must be an identifier">; def ext_concept_legacy_bool_keyword : ExtWarn< - "ISO C++2a does not permit the 'bool' keyword after 'concept'">, + "ISO C++20 does not permit the 'bool' keyword after 'concept'">, InGroup>; def err_placeholder_expected_auto_or_decltype_auto : Error< "expected 'auto' or 'decltype(auto)' after concept name">; Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/DiagnosticSemaKinds.td Thu Feb 27 19:04:39 2020 (r358399) @@ -193,10 +193,10 @@ def ext_flexible_array_init : Extension< // C++20 designated initializers def ext_cxx_designated_init : Extension< - "designated initializers are a C++20 extension">, InGroup; + "designated initializers are a C++20 extension">, InGroup; def warn_cxx17_compat_designated_init : Warning< "designated initializers are incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; def ext_designated_init_mixed : ExtWarn< "mixture of designated and non-designated initializers in the same " "initializer list is a C99 extension">, InGroup; @@ -444,13 +444,13 @@ def err_decomp_decl_spec : Error< "%plural{1:'%1'|:with '%1' specifiers}0">; def ext_decomp_decl_spec : ExtWarn< "decomposition declaration declared " - "%plural{1:'%1'|:with '%1' specifiers}0 is a C++2a extension">, - InGroup; + "%plural{1:'%1'|:with '%1' specifiers}0 is a C++20 extension">, + InGroup; def warn_cxx17_compat_decomp_decl_spec : Warning< "decomposition declaration declared " "%plural{1:'%1'|:with '%1' specifiers}0 " - "is incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; + "is incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; def err_decomp_decl_type : Error< "decomposition declaration cannot be declared with type %0; " "declared type must be 'auto' or reference to 'auto'">; @@ -1949,7 +1949,7 @@ def err_init_list_bad_dest_type : Error< "list">; def warn_cxx2a_compat_aggregate_init_with_ctors : Warning< "aggregate initialization of type %0 with user-declared constructors " - "is incompatible with C++2a">, DefaultIgnore, InGroup; + "is incompatible with C++20">, DefaultIgnore, InGroup; def err_reference_bind_to_bitfield : Error< "%select{non-const|volatile}0 reference cannot bind to " @@ -2438,7 +2438,7 @@ def err_constexpr_redecl_mismatch : Error< def err_constexpr_virtual : Error<"virtual function cannot be constexpr">; def warn_cxx17_compat_constexpr_virtual : Warning< "virtual constexpr functions are incompatible with " - "C++ standards before C++2a">, InGroup, DefaultIgnore; + "C++ standards before C++20">, InGroup, DefaultIgnore; def err_constexpr_virtual_base : Error< "constexpr %select{member function|constructor}0 not allowed in " "%select{struct|interface|class}1 with virtual base " @@ -2464,11 +2464,11 @@ def warn_cxx11_compat_constexpr_body_invalid_stmt : Wa InGroup, DefaultIgnore; def ext_constexpr_body_invalid_stmt_cxx2a : ExtWarn< "use of this statement in a constexpr %select{function|constructor}0 " - "is a C++2a extension">, InGroup; + "is a C++20 extension">, InGroup; def warn_cxx17_compat_constexpr_body_invalid_stmt : Warning< "use of this statement in a constexpr %select{function|constructor}0 " - "is incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; + "is incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; def ext_constexpr_type_definition : ExtWarn< "type definition in a constexpr %select{function|constructor}0 " "is a C++14 extension">, InGroup; @@ -2494,11 +2494,11 @@ def err_constexpr_local_var_non_literal_type : Error< "%select{function|constructor}0">; def ext_constexpr_local_var_no_init : ExtWarn< "uninitialized variable in a constexpr %select{function|constructor}0 " - "is a C++20 extension">, InGroup; + "is a C++20 extension">, InGroup; def warn_cxx17_compat_constexpr_local_var_no_init : Warning< "uninitialized variable in a constexpr %select{function|constructor}0 " "is incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; def ext_constexpr_function_never_constant_expr : ExtWarn< "constexpr %select{function|constructor}0 never produces a " "constant expression">, InGroup>, DefaultError; @@ -2524,29 +2524,29 @@ def warn_cxx11_compat_constexpr_body_multiple_return : def note_constexpr_body_previous_return : Note< "previous return statement is here">; -// C++2a function try blocks in constexpr +// C++20 function try blocks in constexpr def ext_constexpr_function_try_block_cxx2a : ExtWarn< "function try block in constexpr %select{function|constructor}0 is " - "a C++2a extension">, InGroup; + "a C++20 extension">, InGroup; def warn_cxx17_compat_constexpr_function_try_block : Warning< "function try block in constexpr %select{function|constructor}0 is " - "incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; + "incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; def ext_constexpr_union_ctor_no_init : ExtWarn< "constexpr union constructor that does not initialize any member " - "is a C++20 extension">, InGroup; + "is a C++20 extension">, InGroup; def warn_cxx17_compat_constexpr_union_ctor_no_init : Warning< "constexpr union constructor that does not initialize any member " "is incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; def ext_constexpr_ctor_missing_init : ExtWarn< "constexpr constructor that does not initialize all members " - "is a C++20 extension">, InGroup; + "is a C++20 extension">, InGroup; def warn_cxx17_compat_constexpr_ctor_missing_init : Warning< "constexpr constructor that does not initialize all members " "is incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; def note_constexpr_ctor_missing_init : Note< "member not initialized by constructor">; def note_non_literal_no_constexpr_ctors : Note< @@ -2678,7 +2678,7 @@ def warn_cxx98_compat_unicode_type : Warning< InGroup, DefaultIgnore; def warn_cxx17_compat_unicode_type : Warning< "'char8_t' type specifier is incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; // __make_integer_seq def err_integer_sequence_negative_length : Error< @@ -4210,7 +4210,7 @@ def err_ovl_no_viable_literal_operator : Error< def err_template_param_shadow : Error< "declaration of %0 shadows template parameter">; def ext_template_param_shadow : ExtWarn< - err_template_param_shadow.Text>, InGroup; + err_template_param_shadow.Text>, InGroup; def note_template_param_here : Note<"template parameter is declared here">; def warn_template_export_unsupported : Warning< "exported templates are unsupported">; @@ -4289,11 +4289,11 @@ def err_template_tag_noparams : Error< def warn_cxx17_compat_adl_only_template_id : Warning< "use of function template name with no prior function template " "declaration in function call with explicit template arguments " - "is incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; + "is incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; def ext_adl_only_template_id : ExtWarn< "use of function template name with no prior declaration in function call " - "with explicit template arguments is a C++2a extension">, InGroup; + "with explicit template arguments is a C++20 extension">, InGroup; // C++ Template Argument Lists def err_template_missing_args : Error< @@ -4435,12 +4435,12 @@ def err_pointer_to_member_oper_value_classify: Error< "pointer-to-member function type %0 can only be called on an " "%select{rvalue|lvalue}1">; def ext_pointer_to_const_ref_member_on_rvalue : Extension< - "invoking a pointer to a 'const &' member function on an rvalue is a C++2a extension">, - InGroup, SFINAEFailure; + "invoking a pointer to a 'const &' member function on an rvalue is a C++20 extension">, + InGroup, SFINAEFailure; def warn_cxx17_compat_pointer_to_const_ref_member_on_rvalue : Warning< "invoking a pointer to a 'const &' member function on an rvalue is " - "incompatible with C++ standards before C++2a">, - InGroup, DefaultIgnore; + "incompatible with C++ standards before C++20">, + InGroup, DefaultIgnore; def ext_ms_deref_template_argument: ExtWarn< "non-type template argument containing a dereference operation is a " "Microsoft extension">, InGroup; @@ -6189,7 +6189,7 @@ def err_array_init_utf8_string_into_char : Error< "UTF-8 string literal%select{ is not permitted by '-fchar8_t'|}0">; def warn_cxx2a_compat_utf8_string : Warning< "type of UTF-8 string literal will change from array of const char to " - "array of const char8_t in C++2a">, InGroup, DefaultIgnore; + "array of const char8_t in C++20">, InGroup, DefaultIgnore; def note_cxx2a_compat_utf8_string_remove_u8 : Note< "remove 'u8' prefix to avoid a change of behavior; " "Clang encodes unprefixed narrow string literals as UTF-8">; @@ -7116,9 +7116,9 @@ let CategoryName = "Lambda Issue" in { "cannot deduce type for lambda capture %0 from initializer list">; def warn_cxx17_compat_init_capture_pack : Warning< "initialized lambda capture packs are incompatible with C++ standards " - "before C++2a">, InGroup, DefaultIgnore; + "before C++20">, InGroup, DefaultIgnore; def ext_init_capture_pack : ExtWarn< - "initialized lambda pack captures are a C++2a extension">, InGroup; + "initialized lambda pack captures are a C++20 extension">, InGroup; // C++14 generic lambdas. def warn_cxx11_compat_generic_lambda : Warning< @@ -7136,23 +7136,23 @@ let CategoryName = "Lambda Issue" in { def err_parameter_shadow_capture : Error< "a lambda parameter cannot shadow an explicitly captured entity">; - // C++2a [=, this] captures. + // C++20 [=, this] captures. def warn_cxx17_compat_equals_this_lambda_capture : Warning< "explicit capture of 'this' with a capture default of '=' is incompatible " - "with C++ standards before C++2a">, InGroup, DefaultIgnore; + "with C++ standards before C++20">, InGroup, DefaultIgnore; def ext_equals_this_lambda_capture_cxx2a : ExtWarn< "explicit capture of 'this' with a capture default of '=' " - "is a C++2a extension">, InGroup; + "is a C++20 extension">, InGroup; def warn_deprecated_this_capture : Warning< "implicit capture of 'this' with a capture default of '=' is deprecated">, InGroup, DefaultIgnore; def note_deprecated_this_capture : Note< "add an explicit capture of 'this' to capture '*this' by reference">; - // C++2a default constructible / assignable lambdas. + // C++20 default constructible / assignable lambdas. def warn_cxx17_compat_lambda_def_ctor_assign : Warning< "%select{default construction|assignment}0 of lambda is incompatible with " - "C++ standards before C++2a">, InGroup, DefaultIgnore; + "C++ standards before C++20">, InGroup, DefaultIgnore; } def err_return_in_captured_stmt : Error< @@ -7853,7 +7853,7 @@ def ext_cxx14_attr : Extension< def ext_cxx17_attr : Extension< "use of the %0 attribute is a C++17 extension">, InGroup; def ext_cxx2a_attr : Extension< - "use of the %0 attribute is a C++2a extension">, InGroup; + "use of the %0 attribute is a C++20 extension">, InGroup; def warn_unused_comparison : Warning< "%select{equality|inequality|relational|three-way}0 comparison result unused">, @@ -7867,7 +7867,7 @@ def err_incomplete_type_used_in_type_trait_expr : Erro // C++20 constinit and require_constant_initialization attribute def warn_cxx20_compat_constinit : Warning< "'constinit' specifier is incompatible with C++ standards before C++20">, - InGroup, DefaultIgnore; + InGroup, DefaultIgnore; def err_constinit_local_variable : Error< "local variable cannot be declared 'constinit'">; def err_require_constant_init_failed : Error< @@ -8322,7 +8322,7 @@ def note_deleted_type_mismatch : Note< def warn_cxx17_compat_defaulted_method_type_mismatch : Warning< "explicitly defaulting this %sub{select_special_member_kind}0 with a type " "different from the implicit type is incompatible with C++ standards before " - "C++2a">, InGroup, DefaultIgnore; + "C++20">, InGroup, DefaultIgnore; def warn_vbase_moved_multiple_times : Warning< "defaulted move assignment operator of %0 will move assign virtual base " "class %1 multiple times">, InGroup>; @@ -8336,10 +8336,10 @@ def select_defaulted_comparison_kind : TextSubstitutio "%select{|equality|three-way|equality|relational}0 comparison " "operator">; def ext_defaulted_comparison : ExtWarn< - "defaulted comparison operators are a C++20 extension">, InGroup; + "defaulted comparison operators are a C++20 extension">, InGroup; def warn_cxx17_compat_defaulted_comparison : Warning< "defaulted comparison operators are incompatible with C++ standards " - "before C++20">, InGroup, DefaultIgnore; + "before C++20">, InGroup, DefaultIgnore; def err_defaulted_comparison_template : Error< "comparison operator template cannot be defaulted">; def err_defaulted_comparison_out_of_class : Error< Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/LangStandards.def ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/LangStandards.def Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/LangStandards.def Thu Feb 27 19:04:39 2020 (r358399) @@ -140,15 +140,17 @@ LANGSTANDARD(gnucxx17, "gnu++17", Digraphs | HexFloat | GNUMode) LANGSTANDARD_ALIAS_DEPR(gnucxx17, "gnu++1z") -LANGSTANDARD(cxx2a, "c++2a", - CXX, "Working draft for ISO C++ 2020", +LANGSTANDARD(cxx20, "c++20", + CXX, "ISO C++ 2020 DIS", LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus17 | CPlusPlus2a | Digraphs | HexFloat) +LANGSTANDARD_ALIAS_DEPR(cxx20, "c++2a") -LANGSTANDARD(gnucxx2a, "gnu++2a", - CXX, "Working draft for ISO C++ 2020 with GNU extensions", +LANGSTANDARD(gnucxx20, "gnu++20", + CXX, "ISO C++ 2020 DIS with GNU extensions", LineComment | CPlusPlus | CPlusPlus11 | CPlusPlus14 | CPlusPlus17 | CPlusPlus2a | Digraphs | HexFloat | GNUMode) +LANGSTANDARD_ALIAS_DEPR(gnucxx20, "gnu++2a") // OpenCL LANGSTANDARD(opencl10, "cl1.0", Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/StmtNodes.td ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/StmtNodes.td Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Basic/StmtNodes.td Thu Feb 27 19:04:39 2020 (r358399) @@ -162,7 +162,7 @@ def CoawaitExpr : StmtNode; def DependentCoawaitExpr : StmtNode; def CoyieldExpr : StmtNode; -// C++2a Concepts expressions +// C++20 Concepts expressions def ConceptSpecializationExpr : StmtNode; def RequiresExpr : StmtNode; Modified: projects/clang1000-import/contrib/llvm-project/clang/include/clang/Sema/TemplateDeduction.h ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/include/clang/Sema/TemplateDeduction.h Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/include/clang/Sema/TemplateDeduction.h Thu Feb 27 19:04:39 2020 (r358399) @@ -67,6 +67,13 @@ class TemplateDeductionInfo { (public) TemplateDeductionInfo(const TemplateDeductionInfo &) = delete; TemplateDeductionInfo &operator=(const TemplateDeductionInfo &) = delete; + enum ForBaseTag { ForBase }; + /// Create temporary template deduction info for speculatively deducing + /// against a base class of an argument's type. + TemplateDeductionInfo(ForBaseTag, const TemplateDeductionInfo &Info) + : Deduced(Info.Deduced), Loc(Info.Loc), DeducedDepth(Info.DeducedDepth), + ExplicitArgs(Info.ExplicitArgs) {} + /// Returns the location at which template argument is /// occurring. SourceLocation getLocation() const { Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/ASTMatchers/ASTMatchersInternal.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -523,7 +523,13 @@ bool HasNameMatcher::matchesNodeFullFast(const NamedDe if (Ctx->isFunctionOrMethod()) return Patterns.foundMatch(/*AllowFullyQualified=*/false); - for (; Ctx && isa(Ctx); Ctx = Ctx->getParent()) { + for (; Ctx; Ctx = Ctx->getParent()) { + // Linkage Spec can just be ignored + // FIXME: Any other DeclContext kinds that can be safely disregarded + if (isa(Ctx)) + continue; + if (!isa(Ctx)) + break; if (Patterns.foundMatch(/*AllowFullyQualified=*/false)) return true; Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/CodeGen/CodeGenAction.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -1146,6 +1146,9 @@ void CodeGenAction::ExecuteAction() { CI.getTargetOpts(), CI.getLangOpts(), CI.getFrontendOpts().ShowTimers, std::move(LinkModules), *VMContext, nullptr); + // PR44896: Force DiscardValueNames as false. DiscardValueNames cannot be + // true here because the valued names are needed for reading textual IR. + Ctx.setDiscardValueNames(false); Ctx.setDiagnosticHandler( std::make_unique(CodeGenOpts, &Result)); Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Clang.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Clang.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Clang.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -4266,8 +4266,16 @@ void Clang::ConstructJob(Compilation &C, const JobActi // Discard value names in assert builds unless otherwise specified. if (Args.hasFlag(options::OPT_fdiscard_value_names, - options::OPT_fno_discard_value_names, !IsAssertBuild)) + options::OPT_fno_discard_value_names, !IsAssertBuild)) { + if (Args.hasArg(options::OPT_fdiscard_value_names) && + (std::any_of(Inputs.begin(), Inputs.end(), + [](const clang::driver::InputInfo &II) { + return types::isLLVMIR(II.getType()); + }))) { + D.Diag(diag::warn_ignoring_fdiscard_for_bitcode); + } CmdArgs.push_back("-discard-value-names"); + } // Set the main file name, so that debug info works even with // -save-temps. Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Driver/ToolChains/Darwin.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -335,7 +335,7 @@ void darwin::Linker::AddLinkArgs(Compilation &C, const Args.AddAllArgs(CmdArgs, options::OPT_init); // Add the deployment target. - if (!Version[0] || Version[0] >= 520) + if (Version[0] >= 520) MachOTC.addPlatformVersionArgs(Args, CmdArgs); else MachOTC.addMinVersionArgs(Args, CmdArgs); Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Frontend/InitPreprocessor.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -344,13 +344,27 @@ static void InitializeStandardPredefinedMacros(const T const LangOptions &LangOpts, const FrontendOptions &FEOpts, MacroBuilder &Builder) { + // C++ [cpp.predefined]p1: + // The following macro names shall be defined by the implementation: + + // -- __STDC__ + // [C++] Whether __STDC__ is predefined and if so, what its value is, + // are implementation-defined. + // (Removed in C++20.) if (!LangOpts.MSVCCompat && !LangOpts.TraditionalCPP) Builder.defineMacro("__STDC__"); + // -- __STDC_HOSTED__ + // The integer literal 1 if the implementation is a hosted + // implementation or the integer literal 0 if it is not. if (LangOpts.Freestanding) Builder.defineMacro("__STDC_HOSTED__", "0"); else Builder.defineMacro("__STDC_HOSTED__"); + // -- __STDC_VERSION__ + // [C++] Whether __STDC_VERSION__ is predefined and if so, what its + // value is, are implementation-defined. + // (Removed in C++20.) if (!LangOpts.CPlusPlus) { if (LangOpts.C17) Builder.defineMacro("__STDC_VERSION__", "201710L"); @@ -361,33 +375,29 @@ static void InitializeStandardPredefinedMacros(const T else if (!LangOpts.GNUMode && LangOpts.Digraphs) Builder.defineMacro("__STDC_VERSION__", "199409L"); } else { - // FIXME: Use correct value for C++20. + // -- __cplusplus + // [C++20] The integer literal 202002L. if (LangOpts.CPlusPlus2a) - Builder.defineMacro("__cplusplus", "201707L"); - // C++17 [cpp.predefined]p1: - // The name __cplusplus is defined to the value 201703L when compiling a - // C++ translation unit. + Builder.defineMacro("__cplusplus", "202002L"); + // [C++17] The integer literal 201703L. else if (LangOpts.CPlusPlus17) Builder.defineMacro("__cplusplus", "201703L"); - // C++1y [cpp.predefined]p1: - // The name __cplusplus is defined to the value 201402L when compiling a - // C++ translation unit. + // [C++14] The name __cplusplus is defined to the value 201402L when + // compiling a C++ translation unit. else if (LangOpts.CPlusPlus14) Builder.defineMacro("__cplusplus", "201402L"); - // C++11 [cpp.predefined]p1: - // The name __cplusplus is defined to the value 201103L when compiling a - // C++ translation unit. + // [C++11] The name __cplusplus is defined to the value 201103L when + // compiling a C++ translation unit. else if (LangOpts.CPlusPlus11) Builder.defineMacro("__cplusplus", "201103L"); - // C++03 [cpp.predefined]p1: - // The name __cplusplus is defined to the value 199711L when compiling a - // C++ translation unit. + // [C++03] The name __cplusplus is defined to the value 199711L when + // compiling a C++ translation unit. else Builder.defineMacro("__cplusplus", "199711L"); - // C++1z [cpp.predefined]p1: - // An integer literal of type std::size_t whose value is the alignment - // guaranteed by a call to operator new(std::size_t) + // -- __STDCPP_DEFAULT_NEW_ALIGNMENT__ + // [C++17] An integer literal of type std::size_t whose value is the + // alignment guaranteed by a call to operator new(std::size_t) // // We provide this in all language modes, since it seems generally useful. Builder.defineMacro("__STDCPP_DEFAULT_NEW_ALIGNMENT__", Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Sema/SemaTemplateDeduction.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -1818,7 +1818,7 @@ DeduceTemplateArgumentsByTypeMatch(Sema &S, // If this is a base class, try to perform template argument // deduction from it. if (NextT != RecordT) { - TemplateDeductionInfo BaseInfo(Info.getLocation()); + TemplateDeductionInfo BaseInfo(TemplateDeductionInfo::ForBase, Info); Sema::TemplateDeductionResult BaseResult = DeduceTemplateArguments(S, TemplateParams, SpecParam, QualType(NextT, 0), BaseInfo, Deduced); Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReader.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReader.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReader.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -3224,8 +3224,7 @@ ASTReader::ReadASTBlock(ModuleFile &F, unsigned Client case MODULAR_CODEGEN_DECLS: // FIXME: Skip reading this record if our ASTConsumer doesn't care about // them (ie: if we're not codegenerating this module). - if (F.Kind == MK_MainFile || - getContext().getLangOpts().BuildingPCHWithObjectFile) + if (F.Kind == MK_MainFile) for (unsigned I = 0, N = Record.size(); I != N; ++I) EagerlyDeserializedDecls.push_back(getGlobalDeclID(F, Record[I])); break; Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReaderDecl.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReaderDecl.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTReaderDecl.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -502,12 +502,8 @@ uint64_t ASTDeclReader::GetCurrentCursorOffset() { } void ASTDeclReader::ReadFunctionDefinition(FunctionDecl *FD) { - if (Record.readInt()) { + if (Record.readInt()) Reader.DefinitionSource[FD] = Loc.F->Kind == ModuleKind::MK_MainFile; - if (Reader.getContext().getLangOpts().BuildingPCHWithObjectFile && - Reader.DeclIsFromPCHWithObjectFile(FD)) - Reader.DefinitionSource[FD] = true; - } if (auto *CD = dyn_cast(FD)) { CD->setNumCtorInitializers(Record.readInt()); if (CD->getNumCtorInitializers()) @@ -1422,12 +1418,8 @@ ASTDeclReader::RedeclarableResult ASTDeclReader::Visit Reader.getContext().setBlockVarCopyInit(VD, CopyExpr, Record.readInt()); } - if (VD->getStorageDuration() == SD_Static && Record.readInt()) { + if (VD->getStorageDuration() == SD_Static && Record.readInt()) Reader.DefinitionSource[VD] = Loc.F->Kind == ModuleKind::MK_MainFile; - if (Reader.getContext().getLangOpts().BuildingPCHWithObjectFile && - Reader.DeclIsFromPCHWithObjectFile(VD)) - Reader.DefinitionSource[VD] = true; - } enum VarKind { VarNotTemplate = 0, VarTemplate, StaticDataMemberSpecialization @@ -1686,12 +1678,8 @@ void ASTDeclReader::ReadCXXDefinitionData( Data.ODRHash = Record.readInt(); Data.HasODRHash = true; - if (Record.readInt()) { + if (Record.readInt()) Reader.DefinitionSource[D] = Loc.F->Kind == ModuleKind::MK_MainFile; - if (Reader.getContext().getLangOpts().BuildingPCHWithObjectFile && - Reader.DeclIsFromPCHWithObjectFile(D)) - Reader.DefinitionSource[D] = true; - } Data.NumBases = Record.readInt(); if (Data.NumBases) Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriter.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriter.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriter.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -5596,8 +5596,8 @@ void ASTRecordWriter::AddCXXDefinitionData(const CXXRe // getODRHash will compute the ODRHash if it has not been previously computed. Record->push_back(D->getODRHash()); - bool ModulesDebugInfo = - Writer->Context->getLangOpts().ModulesDebugInfo && !D->isDependentType(); + bool ModulesDebugInfo = Writer->Context->getLangOpts().ModulesDebugInfo && + Writer->WritingModule && !D->isDependentType(); Record->push_back(ModulesDebugInfo); if (ModulesDebugInfo) Writer->ModularCodegenDecls.push_back(Writer->GetDeclRef(D)); Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriterDecl.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriterDecl.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Serialization/ASTWriterDecl.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -1011,16 +1011,15 @@ void ASTDeclWriter::VisitVarDecl(VarDecl *D) { if (D->getStorageDuration() == SD_Static) { bool ModulesCodegen = false; - if (!D->getDescribedVarTemplate() && !D->getMemberSpecializationInfo() && + if (Writer.WritingModule && + !D->getDescribedVarTemplate() && !D->getMemberSpecializationInfo() && !isa(D)) { // When building a C++ Modules TS module interface unit, a strong // definition in the module interface is provided by the compilation of // that module interface unit, not by its users. (Inline variables are // still emitted in module users.) ModulesCodegen = - (((Writer.WritingModule && - Writer.WritingModule->Kind == Module::ModuleInterfaceUnit) || - Writer.Context->getLangOpts().BuildingPCHWithObjectFile) && + (Writer.WritingModule->Kind == Module::ModuleInterfaceUnit && Writer.Context->GetGVALinkageForVariable(D) == GVA_StrongExternal); } Record.push_back(ModulesCodegen); @@ -2449,11 +2448,9 @@ void ASTRecordWriter::AddFunctionDefinition(const Func assert(FD->doesThisDeclarationHaveABody()); bool ModulesCodegen = false; - if (!FD->isDependentContext()) { + if (Writer->WritingModule && !FD->isDependentContext()) { Optional Linkage; - if ((Writer->WritingModule && - Writer->WritingModule->Kind == Module::ModuleInterfaceUnit) || - Writer->Context->getLangOpts().BuildingPCHWithObjectFile) { + if (Writer->WritingModule->Kind == Module::ModuleInterfaceUnit) { // When building a C++ Modules TS module interface unit, a strong // definition in the module interface is provided by the compilation of // that module interface unit, not by its users. (Inline functions are Modified: projects/clang1000-import/contrib/llvm-project/clang/lib/Tooling/ArgumentsAdjusters.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/clang/lib/Tooling/ArgumentsAdjusters.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/clang/lib/Tooling/ArgumentsAdjusters.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -42,6 +42,12 @@ ArgumentsAdjuster getClangSyntaxOnlyAdjuster() { if (!Arg.startswith("-fcolor-diagnostics") && !Arg.startswith("-fdiagnostics-color")) AdjustedArgs.push_back(Args[i]); + // If we strip a color option, make sure we strip any preceeding `-Xclang` + // option as well. + // FIXME: This should be added to most argument adjusters! + else if (!AdjustedArgs.empty() && AdjustedArgs.back() == "-Xclang") + AdjustedArgs.pop_back(); + if (Arg == "-fsyntax-only") HasSyntaxOnly = true; } Modified: projects/clang1000-import/contrib/llvm-project/compiler-rt/lib/profile/GCDAProfiling.c ============================================================================== --- projects/clang1000-import/contrib/llvm-project/compiler-rt/lib/profile/GCDAProfiling.c Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/compiler-rt/lib/profile/GCDAProfiling.c Thu Feb 27 19:04:39 2020 (r358399) @@ -62,27 +62,8 @@ typedef unsigned long long uint64_t; #include "InstrProfiling.h" #include "InstrProfilingUtil.h" -#ifndef _WIN32 -#include -static pthread_mutex_t gcov_flush_mutex = PTHREAD_MUTEX_INITIALIZER; -static __inline void gcov_flush_lock() { - pthread_mutex_lock(&gcov_flush_mutex); -} -static __inline void gcov_flush_unlock() { - pthread_mutex_unlock(&gcov_flush_mutex); -} -#else -#include -static SRWLOCK gcov_flush_mutex = SRWLOCK_INIT; -static __inline void gcov_flush_lock() { - AcquireSRWLockExclusive(&gcov_flush_mutex); -} -static __inline void gcov_flush_unlock() { - ReleaseSRWLockExclusive(&gcov_flush_mutex); -} -#endif - /* #define DEBUG_GCDAPROFILING */ + /* * --- GCOV file format I/O primitives --- */ @@ -639,16 +620,12 @@ void llvm_register_flush_function(fn_ptr fn) { } void __gcov_flush() { - gcov_flush_lock(); - struct fn_node* curr = flush_fn_list.head; while (curr) { curr->fn(); curr = curr->next; } - - gcov_flush_unlock(); } COMPILER_RT_VISIBILITY Modified: projects/clang1000-import/contrib/llvm-project/libcxx/include/__bit_reference ============================================================================== --- projects/clang1000-import/contrib/llvm-project/libcxx/include/__bit_reference Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/libcxx/include/__bit_reference Thu Feb 27 19:04:39 2020 (r358399) @@ -1122,6 +1122,21 @@ class __bit_iterator (public) __bit_iterator(const __type_for_copy_to_const& __it) _NOEXCEPT : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {} + // The non-const __bit_iterator has historically had a non-trivial + // copy constructor (as a quirk of its construction). We need to maintain + // this for ABI purposes. + using __type_for_abi_non_trivial_copy_ctor = + _If; + + _LIBCPP_INLINE_VISIBILITY + __bit_iterator(__type_for_abi_non_trivial_copy_ctor const& __it) _NOEXCEPT + : __seg_(__it.__seg_), __ctz_(__it.__ctz_) {} + + // Always declare the copy assignment operator since the implicit declaration + // is deprecated. + _LIBCPP_INLINE_VISIBILITY + __bit_iterator& operator=(__bit_iterator const&) = default; + _LIBCPP_INLINE_VISIBILITY reference operator*() const _NOEXCEPT {return reference(__seg_, __storage_type(1) << __ctz_);} Modified: projects/clang1000-import/contrib/llvm-project/lld/docs/ReleaseNotes.rst ============================================================================== --- projects/clang1000-import/contrib/llvm-project/lld/docs/ReleaseNotes.rst Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/lld/docs/ReleaseNotes.rst Thu Feb 27 19:04:39 2020 (r358399) @@ -86,3 +86,4 @@ WebAssembly Improvements as it's best to keep them internal when possible. They can be explicitly exported with `--export=__data_end` and `--export=__heap_base`, respectively. +* wasm-ld now elides .bss sections when the memory is not imported Modified: projects/clang1000-import/contrib/llvm-project/lldb/source/Expression/DWARFExpression.cpp ============================================================================== --- projects/clang1000-import/contrib/llvm-project/lldb/source/Expression/DWARFExpression.cpp Thu Feb 27 19:00:35 2020 (r358398) +++ projects/clang1000-import/contrib/llvm-project/lldb/source/Expression/DWARFExpression.cpp Thu Feb 27 19:04:39 2020 (r358399) @@ -2071,6 +2071,10 @@ bool DWARFExpression::Evaluate( // not available. Fill with zeros for now by resizing the data and // appending it curr_piece.ResizeData(piece_byte_size); + // Note that "0" is not a correct value for the unknown bits. + // It would be better to also return a mask of valid bits together + // with the expression result, so the debugger can print missing + // members as "" or something. ::memset(curr_piece.GetBuffer().GetBytes(), 0, piece_byte_size); pieces.AppendDataToHostBuffer(curr_piece); } else { @@ -2128,7 +2132,8 @@ bool DWARFExpression::Evaluate( case Value::eValueTypeScalar: { uint32_t bit_size = piece_byte_size * 8; uint32_t bit_offset = 0; - if (!curr_piece_source_value.GetScalar().ExtractBitfield( + Scalar &scalar = curr_piece_source_value.GetScalar(); + if (!scalar.ExtractBitfield( bit_size, bit_offset)) { if (error_ptr) error_ptr->SetErrorStringWithFormat( @@ -2139,7 +2144,14 @@ bool DWARFExpression::Evaluate( .GetByteSize()); return false; } - curr_piece = curr_piece_source_value; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***