From owner-svn-src-vendor@FreeBSD.ORG Sat Feb 14 12:18:55 2015 Return-Path: Delivered-To: svn-src-vendor@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B6652606; Sat, 14 Feb 2015 12:18:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 9E1229F7; Sat, 14 Feb 2015 12:18:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id t1ECItlZ023904; Sat, 14 Feb 2015 12:18:55 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id t1ECIngH023875; Sat, 14 Feb 2015 12:18:49 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201502141218.t1ECIngH023875@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 14 Feb 2015 12:18:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r278754 - in vendor/clang/dist: docs include/clang/Basic lib/AST lib/CodeGen lib/Driver lib/Parse lib/Sema lib/Serialization test/CXX/expr/expr.prim/expr.prim.lambda test/CodeGenCUDA te... X-SVN-Group: vendor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-vendor@freebsd.org X-Mailman-Version: 2.1.18-1 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, 14 Feb 2015 12:18:55 -0000 Author: dim Date: Sat Feb 14 12:18:48 2015 New Revision: 278754 URL: https://svnweb.freebsd.org/changeset/base/278754 Log: Vendor import of clang RELEASE_360/rc3 tag r229040 (effectively, 3.6.0 RC3): https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_360/rc3@229040 Added: vendor/clang/dist/test/CodeGenCUDA/llvm-used.cu vendor/clang/dist/test/PCH/implicitly-deleted.cpp (contents, props changed) Modified: vendor/clang/dist/docs/ReleaseNotes.rst vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td vendor/clang/dist/lib/AST/DeclCXX.cpp vendor/clang/dist/lib/CodeGen/CGClass.cpp vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp vendor/clang/dist/lib/CodeGen/CodeGenModule.h vendor/clang/dist/lib/Driver/Tools.cpp vendor/clang/dist/lib/Parse/ParseExprCXX.cpp vendor/clang/dist/lib/Sema/SemaDecl.cpp vendor/clang/dist/lib/Sema/SemaLookup.cpp vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/p11-1y.cpp vendor/clang/dist/test/CodeGenCXX/ctor-dtor-alias.cpp vendor/clang/dist/test/CodeGenCXX/debug-info-line.cpp vendor/clang/dist/test/Parser/cxx0x-lambda-expressions.cpp vendor/clang/dist/test/Parser/objcxx0x-lambda-expressions.mm vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp vendor/clang/dist/test/SemaCXX/lambda-expressions.cpp Modified: vendor/clang/dist/docs/ReleaseNotes.rst ============================================================================== --- vendor/clang/dist/docs/ReleaseNotes.rst Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/docs/ReleaseNotes.rst Sat Feb 14 12:18:48 2015 (r278754) @@ -98,6 +98,8 @@ Windows Support - Basic support for DWARF debug information in COFF files +- Support for Visual C++ '__super' keyword + C Language Changes in Clang --------------------------- @@ -118,10 +120,35 @@ C++ Language Changes in Clang - Clang will put individual ``.init_array/.ctors`` sections in comdats, reducing code duplication and speeding up startup. -C++11 Feature Support +C++17 Feature Support ^^^^^^^^^^^^^^^^^^^^^ -... +Clang has experimental support for some proposed C++1z (tentatively, C++17) +features. This support can be enabled using the `-std=c++1z` flag. + +New in Clang 3.6 is support for: + +- Fold expressions + +- `u8` character literals + +- Nested namespace definitions: `namespace A::B { ... }` as a shorthand for + `namespace A { namespace B { ... } }` + +- Attributes for namespaces and enumerators + +- Constant evaluation for all non-type template arguments + +Note that these features may be changed or removed in future Clang releases +without notice. + +Support for `for (identifier : range)` as a synonym for +`for (auto &&identifier : range)` has been removed as it is no longer currently +considered for C++17. + +For more details on C++ feature support, see +`the C++ status page `_. + Objective-C Language Changes in Clang ------------------------------------- @@ -133,6 +160,19 @@ OpenCL C Language Changes in Clang ... +OpenMP Language Changes in Clang +-------------------------------- + +Clang 3.6 contains codegen for many individual pragmas for OpenMP but combinations are not completed as yet. +We plan to continue codegen code drop aiming for completion for 3.7. Please see this link for up-to-date +`status _` +LLVM’s OpenMP runtime library, originally developed by Intel, has been modified to work on ARM, PowerPC, +as well as X86. The Runtime Library's compatibility with GCC 4.9 is improved +- missed entry points added, Barrier and fork/join code improved, one more type of barrier enabled. +Support for ppc64le architecture is now available and automatically detected when using cmake system. +Using makefile the new "ppc64le" arch type is available. +Contributors to this work include AMD, Argonne National Lab., IBM, Intel, Texas Instruments, University of Houston and many others. + Internal API Changes -------------------- Modified: vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/include/clang/Basic/DiagnosticGroups.td Sat Feb 14 12:18:48 2015 (r278754) @@ -749,3 +749,6 @@ def SerializedDiagnostics : DiagGroup<"s // A warning group for warnings about code that clang accepts when // compiling CUDA C/C++ but which is not compatible with the CUDA spec. def CudaCompat : DiagGroup<"cuda-compat">; + +// A warning group for things that will change semantics in the future. +def FutureCompat : DiagGroup<"future-compat">; Modified: vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/include/clang/Basic/DiagnosticParseKinds.td Sat Feb 14 12:18:48 2015 (r278754) @@ -802,6 +802,10 @@ def warn_cxx98_compat_lambda : Warning< def err_lambda_missing_parens : Error< "lambda requires '()' before %select{'mutable'|return type|" "attribute specifier}0">; +def warn_init_capture_direct_list_init : Warning< + "direct list initialization of a lambda init-capture will change meaning in " + "a future version of Clang; insert an '=' to avoid a change in behavior">, + InGroup; // Availability attribute def err_expected_version : Error< Modified: vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td ============================================================================== --- vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/include/clang/Basic/DiagnosticSemaKinds.td Sat Feb 14 12:18:48 2015 (r278754) @@ -1635,6 +1635,10 @@ def err_auto_var_init_multiple_expressio def err_auto_var_init_paren_braces : Error< "cannot deduce type for variable %0 with type %1 from " "parenthesized initializer list">; +def warn_auto_var_direct_list_init : Warning< + "direct list initialization of a variable with a deduced type will change " + "meaning in a future version of Clang; insert an '=' to avoid a change in " + "behavior">, InGroup; def err_auto_new_ctor_multiple_expressions : Error< "new expression for type %0 contains multiple constructor arguments">; def err_auto_missing_trailing_return : Error< Modified: vendor/clang/dist/lib/AST/DeclCXX.cpp ============================================================================== --- vendor/clang/dist/lib/AST/DeclCXX.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/AST/DeclCXX.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -1693,12 +1693,12 @@ const Type *CXXCtorInitializer::getBaseC } SourceLocation CXXCtorInitializer::getSourceLocation() const { - if (isAnyMemberInitializer()) - return getMemberLocation(); - if (isInClassMemberInitializer()) return getAnyMember()->getLocation(); + if (isAnyMemberInitializer()) + return getMemberLocation(); + if (TypeSourceInfo *TSInfo = Initializee.get()) return TSInfo->getTypeLoc().getLocalSourceRange().getBegin(); Modified: vendor/clang/dist/lib/CodeGen/CGClass.cpp ============================================================================== --- vendor/clang/dist/lib/CodeGen/CGClass.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/CodeGen/CGClass.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -544,7 +544,7 @@ static void EmitMemberInitializer(CodeGe CXXCtorInitializer *MemberInit, const CXXConstructorDecl *Constructor, FunctionArgList &Args) { - ApplyDebugLocation Loc(CGF, MemberInit->getMemberLocation()); + ApplyDebugLocation Loc(CGF, MemberInit->getSourceLocation()); assert(MemberInit->isAnyMemberInitializer() && "Must have member initializer!"); assert(MemberInit->getInit() && "Must have initializer!"); @@ -598,7 +598,6 @@ static void EmitMemberInitializer(CodeGe ArrayRef ArrayIndexes; if (MemberInit->getNumArrayIndices()) ArrayIndexes = MemberInit->getArrayIndexes(); - ApplyDebugLocation DL(CGF, MemberInit->getMemberLocation()); CGF.EmitInitializerForField(Field, LHS, MemberInit->getInit(), ArrayIndexes); } Modified: vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp ============================================================================== --- vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -3393,11 +3393,12 @@ Value *CodeGenFunction::EmitScalarExpr(c assert(E && hasScalarEvaluationKind(E->getType()) && "Invalid scalar expression to emit"); + bool hasDebugInfo = getDebugInfo(); if (isa(E)) disableDebugInfo(); Value *V = ScalarExprEmitter(*this, IgnoreResultAssign) .Visit(const_cast(E)); - if (isa(E)) + if (isa(E) && hasDebugInfo) enableDebugInfo(); return V; } Modified: vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp ============================================================================== --- vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/CodeGen/CodeGenModule.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -935,8 +935,8 @@ static void emitUsed(CodeGenModule &CGM, UsedArray.resize(List.size()); for (unsigned i = 0, e = List.size(); i != e; ++i) { UsedArray[i] = - llvm::ConstantExpr::getBitCast(cast(&*List[i]), - CGM.Int8PtrTy); + llvm::ConstantExpr::getPointerBitCastOrAddrSpaceCast( + cast(&*List[i]), CGM.Int8PtrTy); } if (UsedArray.empty()) Modified: vendor/clang/dist/lib/CodeGen/CodeGenModule.h ============================================================================== --- vendor/clang/dist/lib/CodeGen/CodeGenModule.h Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/CodeGen/CodeGenModule.h Sat Feb 14 12:18:48 2015 (r278754) @@ -324,7 +324,7 @@ private: /// referenced. These get code generated when the module is done. struct DeferredGlobal { DeferredGlobal(llvm::GlobalValue *GV, GlobalDecl GD) : GV(GV), GD(GD) {} - llvm::AssertingVH GV; + llvm::TrackingVH GV; GlobalDecl GD; }; std::vector DeferredDeclsToEmit; Modified: vendor/clang/dist/lib/Driver/Tools.cpp ============================================================================== --- vendor/clang/dist/lib/Driver/Tools.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/Driver/Tools.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -13,6 +13,7 @@ #include "clang/Basic/LangOptions.h" #include "clang/Basic/ObjCRuntime.h" #include "clang/Basic/Version.h" +#include "clang/Config/config.h" #include "clang/Driver/Action.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" @@ -1538,7 +1539,7 @@ static void AddGoldPlugin(const ToolChai // as gold requires -plugin to come before any -plugin-opt that -Wl might // forward. CmdArgs.push_back("-plugin"); - std::string Plugin = ToolChain.getDriver().Dir + "/../lib/LLVMgold.so"; + std::string Plugin = ToolChain.getDriver().Dir + "/../lib" CLANG_LIBDIR_SUFFIX "/LLVMgold.so"; CmdArgs.push_back(Args.MakeArgString(Plugin)); // Try to pass driver level flags relevant to LTO code generation down to Modified: vendor/clang/dist/lib/Parse/ParseExprCXX.cpp ============================================================================== --- vendor/clang/dist/lib/Parse/ParseExprCXX.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/Parse/ParseExprCXX.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -894,11 +894,16 @@ Optional Parser::ParseLambdaIn // to save the necessary state, and restore it later. EnterExpressionEvaluationContext EC(Actions, Sema::PotentiallyEvaluated); - TryConsumeToken(tok::equal); + bool HadEquals = TryConsumeToken(tok::equal); - if (!SkippedInits) + if (!SkippedInits) { + // Warn on constructs that will change meaning when we implement N3922 + if (!HadEquals && Tok.is(tok::l_brace)) { + Diag(Tok, diag::warn_init_capture_direct_list_init) + << FixItHint::CreateInsertion(Tok.getLocation(), "="); + } Init = ParseInitializer(); - else if (Tok.is(tok::l_brace)) { + } else if (Tok.is(tok::l_brace)) { BalancedDelimiterTracker Braces(*this, tok::l_brace); Braces.consumeOpen(); Braces.skipToEnd(); Modified: vendor/clang/dist/lib/Sema/SemaDecl.cpp ============================================================================== --- vendor/clang/dist/lib/Sema/SemaDecl.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/Sema/SemaDecl.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -8702,6 +8702,14 @@ void Sema::AddInitializerToDecl(Decl *Re CheckVariableDeclarationType(VDecl); if (VDecl->isInvalidDecl()) return; + + // If all looks well, warn if this is a case that will change meaning when + // we implement N3922. + if (DirectInit && !CXXDirectInit && isa(Init)) { + Diag(Init->getLocStart(), + diag::warn_auto_var_direct_list_init) + << FixItHint::CreateInsertion(Init->getLocStart(), "="); + } } // dllimport cannot be used on variable definitions. Modified: vendor/clang/dist/lib/Sema/SemaLookup.cpp ============================================================================== --- vendor/clang/dist/lib/Sema/SemaLookup.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/Sema/SemaLookup.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -2500,8 +2500,18 @@ Sema::SpecialMemberOverloadResult *Sema: // will always be a (possibly implicit) declaration to shadow any others. OverloadCandidateSet OCS(RD->getLocation(), OverloadCandidateSet::CSK_Normal); DeclContext::lookup_result R = RD->lookup(Name); - assert(!R.empty() && - "lookup for a constructor or assignment operator was empty"); + + if (R.empty()) { + // We might have no default constructor because we have a lambda's closure + // type, rather than because there's some other declared constructor. + // Every class has a copy/move constructor, copy/move assignment, and + // destructor. + assert(SM == CXXDefaultConstructor && + "lookup for a constructor or assignment operator was empty"); + Result->setMethod(nullptr); + Result->setKind(SpecialMemberOverloadResult::NoMemberOrDeleted); + return Result; + } // Copy the candidates as our processing of them may load new declarations // from an external source and invalidate lookup_result. Modified: vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp ============================================================================== --- vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/lib/Serialization/ASTWriterDecl.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -370,21 +370,21 @@ void ASTDeclWriter::VisitFunctionDecl(Fu // FunctionDecl's body is handled last at ASTWriterDecl::Visit, // after everything else is written. - Record.push_back(D->getStorageClass()); // FIXME: stable encoding + Record.push_back((int)D->SClass); // FIXME: stable encoding Record.push_back(D->IsInline); - Record.push_back(D->isInlineSpecified()); - Record.push_back(D->isVirtualAsWritten()); - Record.push_back(D->isPure()); - Record.push_back(D->hasInheritedPrototype()); - Record.push_back(D->hasWrittenPrototype()); - Record.push_back(D->isDeletedAsWritten()); - Record.push_back(D->isTrivial()); - Record.push_back(D->isDefaulted()); - Record.push_back(D->isExplicitlyDefaulted()); - Record.push_back(D->hasImplicitReturnZero()); - Record.push_back(D->isConstexpr()); + Record.push_back(D->IsInlineSpecified); + Record.push_back(D->IsVirtualAsWritten); + Record.push_back(D->IsPure); + Record.push_back(D->HasInheritedPrototype); + Record.push_back(D->HasWrittenPrototype); + Record.push_back(D->IsDeleted); + Record.push_back(D->IsTrivial); + Record.push_back(D->IsDefaulted); + Record.push_back(D->IsExplicitlyDefaulted); + Record.push_back(D->HasImplicitReturnZero); + Record.push_back(D->IsConstexpr); Record.push_back(D->HasSkippedBody); - Record.push_back(D->isLateTemplateParsed()); + Record.push_back(D->IsLateTemplateParsed); Record.push_back(D->getLinkageInternal()); Writer.AddSourceLocation(D->getLocEnd(), Record); @@ -1802,7 +1802,7 @@ void ASTWriter::WriteDeclAbbrevs() { Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Pure Abv->Add(BitCodeAbbrevOp(0)); // HasInheritedProto Abv->Add(BitCodeAbbrevOp(1)); // HasWrittenProto - Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // DeletedAsWritten + Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Deleted Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Trivial Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Defaulted Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // ExplicitlyDefaulted Modified: vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/p11-1y.cpp ============================================================================== --- vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/p11-1y.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/CXX/expr/expr.prim/expr.prim.lambda/p11-1y.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -48,7 +48,7 @@ auto bad_init_2 = [a(1, 2)] {}; // expec auto bad_init_3 = [&a(void_fn())] {}; // expected-error {{cannot form a reference to 'void'}} auto bad_init_4 = [a(void_fn())] {}; // expected-error {{has incomplete type 'void'}} auto bad_init_5 = [a(overload_fn)] {}; // expected-error {{cannot deduce type for lambda capture 'a' from initializer of type ' void pack_1(T...t) { (void)[a(t...)] {}; } // expected-error {{initializer missing for lambda capture 'a'}} template void pack_1<>(); // expected-note {{instantiation of}} @@ -61,7 +61,7 @@ auto a = [a(4), b = 5, &c = static_cast< using T = decltype(c); using T = const int &; }; -auto b = [a{0}] {}; // expected-error {{include }} +auto b = [a{0}] {}; // expected-error {{include }} expected-warning {{will change meaning in a future version of Clang}} struct S { S(); S(S&&); }; template struct remove_reference { typedef T type; }; Added: vendor/clang/dist/test/CodeGenCUDA/llvm-used.cu ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/test/CodeGenCUDA/llvm-used.cu Sat Feb 14 12:18:48 2015 (r278754) @@ -0,0 +1,8 @@ +// RUN: %clang_cc1 -emit-llvm %s -o - -fcuda-is-device -triple nvptx64-unknown-unknown | FileCheck %s + + +// Make sure we emit the proper addrspacecast for llvm.used. PR22383 exposed an +// issue where we were generating a bitcast instead of an addrspacecast. + +// CHECK: @llvm.used = appending global [1 x i8*] [i8* addrspacecast (i8 addrspace(1)* bitcast ([0 x i32] addrspace(1)* @a to i8 addrspace(1)*) to i8*)], section "llvm.metadata" +__attribute__((device)) __attribute__((__used__)) int a[] = {}; Modified: vendor/clang/dist/test/CodeGenCXX/ctor-dtor-alias.cpp ============================================================================== --- vendor/clang/dist/test/CodeGenCXX/ctor-dtor-alias.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/CodeGenCXX/ctor-dtor-alias.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -232,3 +232,14 @@ foo::~foo() {} // CHECK6: @_ZN6test113fooD2Ev = alias {{.*}} @_ZN6test113barD2Ev // CHECK6: @_ZN6test113fooD1Ev = alias {{.*}} @_ZN6test113fooD2Ev } + +namespace test12 { +template +struct foo { + ~foo() { delete this; } +}; + +template class foo<1>; +// CHECK6: @_ZN6test123fooILi1EED1Ev = weak_odr alias {{.*}} @_ZN6test123fooILi1EED2Ev +// CHECK6: define weak_odr void @_ZN6test123fooILi1EED2Ev({{.*}}) {{.*}} comdat($_ZN6test123fooILi1EED5Ev) +} Modified: vendor/clang/dist/test/CodeGenCXX/debug-info-line.cpp ============================================================================== --- vendor/clang/dist/test/CodeGenCXX/debug-info-line.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/CodeGenCXX/debug-info-line.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -166,6 +166,33 @@ void f13() { F13_IMPL; } +struct f14 { + f14(int); +}; + +// CHECK-LABEL: define +struct f14_use { +// CHECK: call {{.*}}, !dbg [[DBG_F14_CTOR_CALL:![0-9]*]] +#line 1600 + f14 v + = + 1; + f14_use(); +}; + +f14_use::f14_use() = default; + +// CHECK-LABEL: define + +// CHECK-LABEL: define +int f21_a(int = 0); +void f21_b(int = f21_a()); +void f21() { +// CHECK: call {{.*}}f21_b{{.*}}, !dbg [[DBG_F21:![0-9]*]] +#line 2300 + f21_b(); +} + // CHECK: [[DBG_F1]] = !MDLocation(line: 100, // CHECK: [[DBG_FOO_VALUE]] = !MDLocation(line: 200, // CHECK: [[DBG_FOO_REF]] = !MDLocation(line: 202, Added: vendor/clang/dist/test/PCH/implicitly-deleted.cpp ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/test/PCH/implicitly-deleted.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -0,0 +1,18 @@ +// RUN: %clang_cc1 -std=c++11 -x c++-header %s -emit-pch -o %t.pch +// RUN: %clang_cc1 -std=c++11 -x c++ /dev/null -include-pch %t.pch +class move_only { move_only(const move_only&) = delete; move_only(move_only&&); }; +struct sb { + move_only il; + sb(); + sb(sb &&); +}; + +template T make(); +template void doit(decltype(T(make()))*) { T(make()); } +template void doit(...) { T(make()); } +template void later() { doit(0); } + +void fn1() { + sb x; + later(); +} Modified: vendor/clang/dist/test/Parser/cxx0x-lambda-expressions.cpp ============================================================================== --- vendor/clang/dist/test/Parser/cxx0x-lambda-expressions.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/Parser/cxx0x-lambda-expressions.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -61,7 +61,7 @@ class C { int z; void init_capture() { [n(0)] () mutable -> int { return ++n; }; // expected-warning{{extension}} - [n{0}] { return; }; // expected-error {{}} expected-warning{{extension}} + [n{0}] { return; }; // expected-error {{}} expected-warning{{extension}} expected-warning{{will change meaning in a future version}} [n = 0] { return ++n; }; // expected-error {{captured by copy in a non-mutable}} expected-warning{{extension}} [n = {0}] { return; }; // expected-error {{}} expected-warning{{extension}} [a([&b = z]{})](){}; // expected-warning 2{{extension}} Modified: vendor/clang/dist/test/Parser/objcxx0x-lambda-expressions.mm ============================================================================== --- vendor/clang/dist/test/Parser/objcxx0x-lambda-expressions.mm Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/Parser/objcxx0x-lambda-expressions.mm Sat Feb 14 12:18:48 2015 (r278754) @@ -21,7 +21,7 @@ class C { [foo(bar)] () {}; [foo = bar] () {}; - [foo{bar}] () {}; // expected-error {{}} + [foo{bar}] () {}; // expected-error {{}} expected-warning {{will change meaning}} [foo = {bar}] () {}; // expected-error {{}} [foo(bar) baz] () {}; // expected-error {{called object type 'int' is not a function}} Modified: vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp ============================================================================== --- vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/SemaCXX/cxx0x-initializer-stdinitializerlist.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -117,6 +117,7 @@ void argument_deduction() { void auto_deduction() { auto l = {1, 2, 3, 4}; + auto l2 {1, 2, 3, 4}; // expected-warning {{will change meaning in a future version of Clang}} static_assert(same_type>::value, ""); auto bl = {1, 2.0}; // expected-error {{cannot deduce}} Modified: vendor/clang/dist/test/SemaCXX/lambda-expressions.cpp ============================================================================== --- vendor/clang/dist/test/SemaCXX/lambda-expressions.cpp Sat Feb 14 12:18:37 2015 (r278753) +++ vendor/clang/dist/test/SemaCXX/lambda-expressions.cpp Sat Feb 14 12:18:48 2015 (r278754) @@ -437,3 +437,12 @@ namespace error_in_transform_prototype { f(S()); // expected-note {{requested here}} } } + +namespace PR21857 { + template struct fun : Fn { + fun() = default; + using Fn::operator(); + }; + template fun wrap(Fn fn); + auto x = wrap([](){}); +}