From owner-svn-src-vendor@freebsd.org Sat Jul 6 15:33:54 2019 Return-Path: Delivered-To: svn-src-vendor@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 3B40415CAAA7; Sat, 6 Jul 2019 15:33:54 +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 D70498FB99; Sat, 6 Jul 2019 15:33:53 +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 A2A4D2380A; Sat, 6 Jul 2019 15:33:53 +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 x66FXrIO014083; Sat, 6 Jul 2019 15:33:53 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id x66FXqC1014076; Sat, 6 Jul 2019 15:33:52 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201907061533.x66FXqC1014076@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 6 Jul 2019 15:33:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r349779 - in vendor/clang/dist-release_80: lib/AST lib/CodeGen lib/Driver/ToolChains/Arch test/CodeGenCXX test/Driver X-SVN-Group: vendor X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in vendor/clang/dist-release_80: lib/AST lib/CodeGen lib/Driver/ToolChains/Arch test/CodeGenCXX test/Driver X-SVN-Commit-Revision: 349779 X-SVN-Commit-Repository: base MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: D70498FB99 X-Spamd-Bar: -- Authentication-Results: mx1.freebsd.org X-Spamd-Result: default: False [-2.94 / 15.00]; local_wl_from(0.00)[FreeBSD.org]; NEURAL_HAM_MEDIUM(-1.00)[-1.000,0]; NEURAL_HAM_SHORT(-0.94)[-0.936,0]; ASN(0.00)[asn:11403, ipnet:2610:1c1:1::/48, country:US]; NEURAL_HAM_LONG(-1.00)[-1.000,0] X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: SVN commit messages for the vendor work area tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 06 Jul 2019 15:33:54 -0000 Author: dim Date: Sat Jul 6 15:33:52 2019 New Revision: 349779 URL: https://svnweb.freebsd.org/changeset/base/349779 Log: Vendor import of clang release_80 branch r364487: https://llvm.org/svn/llvm-project/cfe/branches/release_80@364487 Added: vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-var-template-partial.cpp Modified: vendor/clang/dist-release_80/lib/AST/MicrosoftMangle.cpp vendor/clang/dist-release_80/lib/CodeGen/CGDebugInfo.cpp vendor/clang/dist-release_80/lib/Driver/ToolChains/Arch/PPC.cpp vendor/clang/dist-release_80/test/CodeGenCXX/char8_t.cpp vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-template-member.cpp vendor/clang/dist-release_80/test/Driver/netbsd.c Modified: vendor/clang/dist-release_80/lib/AST/MicrosoftMangle.cpp ============================================================================== --- vendor/clang/dist-release_80/lib/AST/MicrosoftMangle.cpp Sat Jul 6 15:33:49 2019 (r349778) +++ vendor/clang/dist-release_80/lib/AST/MicrosoftMangle.cpp Sat Jul 6 15:33:52 2019 (r349779) @@ -1937,8 +1937,9 @@ void MicrosoftCXXNameMangler::mangleType(const Builtin // ::= _M # unsigned __int128 // ::= _N # bool // _O # - // ::= _T # __float80 (Intel) + // ::= _Q # char8_t // ::= _S # char16_t + // ::= _T # __float80 (Intel) // ::= _U # char32_t // ::= _W # wchar_t // ::= _Z # __float80 (Digital Mars) @@ -1999,6 +2000,9 @@ void MicrosoftCXXNameMangler::mangleType(const Builtin case BuiltinType::Bool: Out << "_N"; break; + case BuiltinType::Char8: + Out << "_Q"; + break; case BuiltinType::Char16: Out << "_S"; break; @@ -2094,7 +2098,6 @@ void MicrosoftCXXNameMangler::mangleType(const Builtin case BuiltinType::SatUShortFract: case BuiltinType::SatUFract: case BuiltinType::SatULongFract: - case BuiltinType::Char8: case BuiltinType::Float128: { DiagnosticsEngine &Diags = Context.getDiags(); unsigned DiagID = Diags.getCustomDiagID( Modified: vendor/clang/dist-release_80/lib/CodeGen/CGDebugInfo.cpp ============================================================================== --- vendor/clang/dist-release_80/lib/CodeGen/CGDebugInfo.cpp Sat Jul 6 15:33:49 2019 (r349778) +++ vendor/clang/dist-release_80/lib/CodeGen/CGDebugInfo.cpp Sat Jul 6 15:33:52 2019 (r349779) @@ -1817,32 +1817,24 @@ CGDebugInfo::CollectFunctionTemplateParams(const Funct } llvm::DINodeArray CGDebugInfo::CollectVarTemplateParams(const VarDecl *VL, - llvm::DIFile *Unit) { - if (auto *TS = dyn_cast(VL)) { - auto T = TS->getSpecializedTemplateOrPartial(); - auto TA = TS->getTemplateArgs().asArray(); - // Collect parameters for a partial specialization - if (T.is()) { - const TemplateParameterList *TList = - T.get() - ->getTemplateParameters(); - return CollectTemplateParams(TList, TA, Unit); - } - - // Collect parameters for an explicit specialization - if (T.is()) { - const TemplateParameterList *TList = T.get() - ->getTemplateParameters(); - return CollectTemplateParams(TList, TA, Unit); - } - } - return llvm::DINodeArray(); + llvm::DIFile *Unit) { + // Always get the full list of parameters, not just the ones from the + // specialization. A partial specialization may have fewer parameters than + // there are arguments. + auto *TS = dyn_cast(VL); + if (!TS) + return llvm::DINodeArray(); + VarTemplateDecl *T = TS->getSpecializedTemplate(); + const TemplateParameterList *TList = T->getTemplateParameters(); + auto TA = TS->getTemplateArgs().asArray(); + return CollectTemplateParams(TList, TA, Unit); } llvm::DINodeArray CGDebugInfo::CollectCXXTemplateParams( const ClassTemplateSpecializationDecl *TSpecial, llvm::DIFile *Unit) { - // Always get the full list of parameters, not just the ones from - // the specialization. + // Always get the full list of parameters, not just the ones from the + // specialization. A partial specialization may have fewer parameters than + // there are arguments. TemplateParameterList *TPList = TSpecial->getSpecializedTemplate()->getTemplateParameters(); const TemplateArgumentList &TAList = TSpecial->getTemplateArgs(); Modified: vendor/clang/dist-release_80/lib/Driver/ToolChains/Arch/PPC.cpp ============================================================================== --- vendor/clang/dist-release_80/lib/Driver/ToolChains/Arch/PPC.cpp Sat Jul 6 15:33:49 2019 (r349778) +++ vendor/clang/dist-release_80/lib/Driver/ToolChains/Arch/PPC.cpp Sat Jul 6 15:33:52 2019 (r349779) @@ -116,7 +116,7 @@ ppc::ReadGOTPtrMode ppc::getPPCReadGOTPtrMode(const Dr const ArgList &Args) { if (Args.getLastArg(options::OPT_msecure_plt)) return ppc::ReadGOTPtrMode::SecurePlt; - if (Triple.isOSOpenBSD()) + if (Triple.isOSNetBSD() || Triple.isOSOpenBSD()) return ppc::ReadGOTPtrMode::SecurePlt; else return ppc::ReadGOTPtrMode::Bss; Modified: vendor/clang/dist-release_80/test/CodeGenCXX/char8_t.cpp ============================================================================== --- vendor/clang/dist-release_80/test/CodeGenCXX/char8_t.cpp Sat Jul 6 15:33:49 2019 (r349778) +++ vendor/clang/dist-release_80/test/CodeGenCXX/char8_t.cpp Sat Jul 6 15:33:52 2019 (r349779) @@ -1,9 +1,11 @@ -// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-linux %s -o - | FileCheck %s -// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-windows %s -o - -verify +// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-linux %s -o - | FileCheck %s --check-prefix=ITANIUM +// RUN: %clang_cc1 -std=c++17 -emit-llvm -fchar8_t -triple x86_64-windows %s -o - | FileCheck %s --check-prefix=MSABI -// CHECK: define void @_Z1fDu( -void f(char8_t c) {} // expected-error {{cannot mangle this built-in char8_t type yet}} +// ITANIUM: define void @_Z1fDu( +// MSABI: define {{.*}}void @"?f@@YAX_Q@Z"( +void f(char8_t c) {} -// CHECK: define weak_odr void @_Z1gIiEvDTplplcvT__ELA4_KDuELDu114EE +// ITANIUM: define weak_odr void @_Z1gIiEvDTplplcvT__ELA4_KDuELDu114EE( +// MSABI: define weak_odr {{.*}}void @"??$g@H@@YAXPEB_Q@Z"( template void g(decltype(T() + u8"foo" + u8'r')) {} template void g(const char8_t*); Modified: vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-template-member.cpp ============================================================================== --- vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-template-member.cpp Sat Jul 6 15:33:49 2019 (r349778) +++ vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-template-member.cpp Sat Jul 6 15:33:52 2019 (r349779) @@ -30,7 +30,7 @@ inline int add3(int x) { // CHECK: {{![0-9]+}} = distinct !DIGlobalVariable( // CHECK-SAME: name: "var" // CHECK-SAME: templateParams: {{![0-9]+}} -// CHECK: !DITemplateTypeParameter(name: "P", type: {{![0-9]+}}) +// CHECK: !DITemplateTypeParameter(name: "T", type: {{![0-9]+}}) // CHECK: {{![0-9]+}} = distinct !DIGlobalVariable( // CHECK-SAME: name: "varray" // CHECK-SAME: templateParams: {{![0-9]+}} Added: vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-var-template-partial.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist-release_80/test/CodeGenCXX/debug-info-var-template-partial.cpp Sat Jul 6 15:33:52 2019 (r349779) @@ -0,0 +1,17 @@ +// RUN: %clang_cc1 -emit-llvm -triple x86_64-linux-gnu %s -o - -debug-info-kind=limited | FileCheck %s + +template constexpr bool is_same_v = false; +template constexpr bool is_same_v = true; + +template constexpr bool is_same_v; +static_assert(is_same_v, "should get partial spec"); + +// Note that the template arguments for the instantiated variable use the +// parameter names from the primary template. The partial specialization might +// not have enough parameters. + +// CHECK: distinct !DIGlobalVariable(name: "is_same_v", linkageName: "_ZL9is_same_vIiiE", {{.*}} templateParams: ![[PARAMS:[0-9]+]]) +// CHECK: ![[PARAMS]] = !{![[LHS:[0-9]+]], ![[RHS:[0-9]+]]} +// CHECK: ![[LHS]] = !DITemplateTypeParameter(name: "LHS", type: ![[INT:[0-9]+]]) +// CHECK: ![[INT]] = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) +// CHECK: ![[RHS]] = !DITemplateTypeParameter(name: "RHS", type: ![[INT]]) Modified: vendor/clang/dist-release_80/test/Driver/netbsd.c ============================================================================== --- vendor/clang/dist-release_80/test/Driver/netbsd.c Sat Jul 6 15:33:49 2019 (r349778) +++ vendor/clang/dist-release_80/test/Driver/netbsd.c Sat Jul 6 15:33:52 2019 (r349779) @@ -446,3 +446,8 @@ // PTHREAD-NOT: _POSIX_THREADS // PTHREAD: _REENTRANT // PTHREAD-NOT: _POSIX_THREADS + +// Check PowerPC for Secure PLT +// RUN: %clang -target powerpc-unknown-netbsd -### -c %s 2>&1 \ +// RUN: | FileCheck -check-prefix=POWERPC-SECUREPLT %s +// POWERPC-SECUREPLT: "-target-feature" "+secure-plt"