From owner-svn-src-projects@freebsd.org Sat Jan 6 23:44:17 2018 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id AF0DEDFA393 for ; Sat, 6 Jan 2018 23:44:17 +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.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client CN "mxrelay.nyi.freebsd.org", Issuer "Let's Encrypt Authority X3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4852868695; Sat, 6 Jan 2018 23:44:17 +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 88E49193E0; Sat, 6 Jan 2018 23:44:16 +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 w06NiGse022622; Sat, 6 Jan 2018 23:44:16 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id w06NiF7B022607; Sat, 6 Jan 2018 23:44:15 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201801062344.w06NiF7B022607@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 6 Jan 2018 23:44:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r327657 - in projects/clang600-import: contrib/compiler-rt/lib/profile contrib/libc++ contrib/libc++/include contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/IR contrib/llvm/... X-SVN-Group: projects X-SVN-Commit-Author: dim X-SVN-Commit-Paths: in projects/clang600-import: contrib/compiler-rt/lib/profile contrib/libc++ contrib/libc++/include contrib/llvm/include/llvm/CodeGen contrib/llvm/include/llvm/IR contrib/llvm/include/llvm/Support cont... X-SVN-Commit-Revision: 327657 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.25 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: Sat, 06 Jan 2018 23:44:17 -0000 Author: dim Date: Sat Jan 6 23:44:14 2018 New Revision: 327657 URL: https://svnweb.freebsd.org/changeset/base/327657 Log: Merge llvm, clang, lld, lldb, compiler-rt and libc++ release_60 r321788, update build glue and version numbers. Modified: projects/clang600-import/contrib/compiler-rt/lib/profile/GCDAProfiling.c projects/clang600-import/contrib/libc++/CREDITS.TXT projects/clang600-import/contrib/libc++/include/__config projects/clang600-import/contrib/libc++/include/__functional_base projects/clang600-import/contrib/libc++/include/__mutex_base projects/clang600-import/contrib/libc++/include/chrono projects/clang600-import/contrib/libc++/include/functional projects/clang600-import/contrib/libc++/include/memory projects/clang600-import/contrib/libc++/include/mutex projects/clang600-import/contrib/libc++/include/optional projects/clang600-import/contrib/libc++/include/ratio projects/clang600-import/contrib/libc++/include/system_error projects/clang600-import/contrib/libc++/include/tuple projects/clang600-import/contrib/libc++/include/type_traits projects/clang600-import/contrib/libc++/include/utility projects/clang600-import/contrib/libc++/include/variant projects/clang600-import/contrib/llvm/include/llvm/CodeGen/TargetPassConfig.h projects/clang600-import/contrib/llvm/include/llvm/IR/Function.h projects/clang600-import/contrib/llvm/include/llvm/IR/IntrinsicsAMDGPU.td projects/clang600-import/contrib/llvm/include/llvm/Support/CommandLine.h projects/clang600-import/contrib/llvm/include/llvm/Support/TargetRegistry.h projects/clang600-import/contrib/llvm/include/llvm/Transforms/Scalar/LoopPassManager.h projects/clang600-import/contrib/llvm/lib/Analysis/InstructionSimplify.cpp projects/clang600-import/contrib/llvm/lib/Analysis/ScalarEvolution.cpp projects/clang600-import/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp projects/clang600-import/contrib/llvm/lib/Analysis/ValueTracking.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/CodeGenPrepare.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/LiveDebugVariables.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/TargetPassConfig.cpp projects/clang600-import/contrib/llvm/lib/CodeGen/WinEHPrepare.cpp projects/clang600-import/contrib/llvm/lib/IR/BasicBlock.cpp projects/clang600-import/contrib/llvm/lib/IR/Verifier.cpp projects/clang600-import/contrib/llvm/lib/MC/MCParser/ELFAsmParser.cpp projects/clang600-import/contrib/llvm/lib/Passes/PassBuilder.cpp projects/clang600-import/contrib/llvm/lib/Support/CommandLine.cpp projects/clang600-import/contrib/llvm/lib/Target/AArch64/AArch64ISelLowering.cpp projects/clang600-import/contrib/llvm/lib/Target/AArch64/AArch64RegisterInfo.td projects/clang600-import/contrib/llvm/lib/Target/AArch64/AArch64TargetMachine.cpp projects/clang600-import/contrib/llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp projects/clang600-import/contrib/llvm/lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp projects/clang600-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64AsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/AArch64/MCTargetDesc/AArch64MCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/MIMGInstructions.td projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/SIISelLowering.cpp projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.cpp projects/clang600-import/contrib/llvm/lib/Target/AMDGPU/SIMachineFunctionInfo.h projects/clang600-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackend.h projects/clang600-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackendDarwin.h projects/clang600-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackendELF.h projects/clang600-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMAsmBackendWinCOFF.h projects/clang600-import/contrib/llvm/lib/Target/ARM/MCTargetDesc/ARMMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/AVR/MCTargetDesc/AVRAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/AVR/MCTargetDesc/AVRMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/BPF/MCTargetDesc/BPFMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/Hexagon/HexagonLoopIdiomRecognition.cpp projects/clang600-import/contrib/llvm/lib/Target/Hexagon/HexagonPatterns.td projects/clang600-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/Hexagon/MCTargetDesc/HexagonMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/Lanai/MCTargetDesc/LanaiAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/Lanai/MCTargetDesc/LanaiMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/Mips/MCTargetDesc/MipsMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp projects/clang600-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp projects/clang600-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp projects/clang600-import/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.h projects/clang600-import/contrib/llvm/lib/Target/PowerPC/PPCMIPeephole.cpp projects/clang600-import/contrib/llvm/lib/Target/PowerPC/PPCPreEmitPeephole.cpp projects/clang600-import/contrib/llvm/lib/Target/RISCV/MCTargetDesc/RISCVAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/RISCV/MCTargetDesc/RISCVMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/RISCV/RISCVISelLowering.cpp projects/clang600-import/contrib/llvm/lib/Target/RISCV/RISCVInstrInfoC.td projects/clang600-import/contrib/llvm/lib/Target/Sparc/MCTargetDesc/SparcAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/Sparc/MCTargetDesc/SparcMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/WebAssembly/MCTargetDesc/WebAssemblyMCTargetDesc.cpp projects/clang600-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86AsmBackend.cpp projects/clang600-import/contrib/llvm/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h projects/clang600-import/contrib/llvm/lib/Target/X86/X86FixupBWInsts.cpp projects/clang600-import/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp projects/clang600-import/contrib/llvm/lib/Target/X86/X86ISelLowering.h projects/clang600-import/contrib/llvm/lib/Target/X86/X86InstrAVX512.td projects/clang600-import/contrib/llvm/lib/Target/X86/X86InstrMMX.td projects/clang600-import/contrib/llvm/lib/Transforms/Coroutines/CoroSplit.cpp projects/clang600-import/contrib/llvm/lib/Transforms/InstCombine/InstCombineMulDivRem.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/GVNSink.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/InductiveRangeCheckElimination.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/SimpleLoopUnswitch.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Scalar/StructurizeCFG.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/CallPromotionUtils.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/Local.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/LoopUnrollRuntime.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/LoopUtils.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/SSAUpdater.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp projects/clang600-import/contrib/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp projects/clang600-import/contrib/llvm/tools/clang/include/clang/AST/StmtOpenMP.h projects/clang600-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td projects/clang600-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td projects/clang600-import/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td projects/clang600-import/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.def projects/clang600-import/contrib/llvm/tools/clang/include/clang/Driver/Driver.h projects/clang600-import/contrib/llvm/tools/clang/include/clang/Driver/Options.td projects/clang600-import/contrib/llvm/tools/clang/include/clang/Parse/Parser.h projects/clang600-import/contrib/llvm/tools/clang/include/clang/Parse/RAIIObjectsForParser.h projects/clang600-import/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h projects/clang600-import/contrib/llvm/tools/clang/include/clang/Sema/Sema.h projects/clang600-import/contrib/llvm/tools/clang/lib/AST/Decl.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Basic/Targets/X86.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Basic/Version.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGOpenMPRuntime.h projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CGStmtOpenMP.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h projects/clang600-import/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Driver/Driver.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Clang.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Driver/ToolChains/Darwin.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Headers/emmintrin.h projects/clang600-import/contrib/llvm/tools/clang/lib/Headers/pmmintrin.h projects/clang600-import/contrib/llvm/tools/clang/lib/Headers/smmintrin.h projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseOpenMP.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Parse/Parser.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaExprMember.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaLambda.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp projects/clang600-import/contrib/llvm/tools/clang/lib/StaticAnalyzer/Core/BugReporter.cpp projects/clang600-import/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp projects/clang600-import/contrib/llvm/tools/lld/ELF/Driver.cpp projects/clang600-import/contrib/llvm/tools/lld/ELF/Relocations.cpp projects/clang600-import/contrib/llvm/tools/lld/ELF/SyntheticSections.cpp projects/clang600-import/contrib/llvm/tools/lldb/source/Core/Debugger.cpp projects/clang600-import/contrib/llvm/tools/lldb/source/Plugins/Instruction/ARM64/EmulateInstructionARM64.cpp projects/clang600-import/contrib/llvm/tools/llvm-mc/llvm-mc.cpp projects/clang600-import/contrib/llvm/tools/llvm-objcopy/Object.cpp projects/clang600-import/contrib/llvm/tools/llvm-objcopy/Object.h projects/clang600-import/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp projects/clang600-import/lib/clang/include/clang/Basic/Version.inc projects/clang600-import/lib/clang/include/clang/Config/config.h projects/clang600-import/lib/clang/include/lld/Common/Version.inc projects/clang600-import/lib/clang/include/llvm/Config/config.h projects/clang600-import/lib/clang/include/llvm/Config/llvm-config.h projects/clang600-import/lib/clang/include/llvm/Support/VCSRevision.h Directory Properties: projects/clang600-import/contrib/compiler-rt/ (props changed) projects/clang600-import/contrib/libc++/ (props changed) projects/clang600-import/contrib/llvm/ (props changed) projects/clang600-import/contrib/llvm/tools/clang/ (props changed) projects/clang600-import/contrib/llvm/tools/lld/ (props changed) projects/clang600-import/contrib/llvm/tools/lldb/ (props changed) Modified: projects/clang600-import/contrib/compiler-rt/lib/profile/GCDAProfiling.c ============================================================================== --- projects/clang600-import/contrib/compiler-rt/lib/profile/GCDAProfiling.c Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/compiler-rt/lib/profile/GCDAProfiling.c Sat Jan 6 23:44:14 2018 (r327657) @@ -228,6 +228,7 @@ static void unmap_file() { * profiling enabled will emit to a different file. Only one file may be * started at a time. */ +COMPILER_RT_VISIBILITY void llvm_gcda_start_file(const char *orig_filename, const char version[4], uint32_t checksum) { const char *mode = "r+b"; @@ -295,6 +296,7 @@ void llvm_gcda_start_file(const char *orig_filename, c /* Given an array of pointers to counters (counters), increment the n-th one, * where we're also given a pointer to n (predecessor). */ +COMPILER_RT_VISIBILITY void llvm_gcda_increment_indirect_counter(uint32_t *predecessor, uint64_t **counters) { uint64_t *counter; @@ -317,6 +319,7 @@ void llvm_gcda_increment_indirect_counter(uint32_t *pr #endif } +COMPILER_RT_VISIBILITY void llvm_gcda_emit_function(uint32_t ident, const char *function_name, uint32_t func_checksum, uint8_t use_extra_checksum, uint32_t cfg_checksum) { @@ -343,6 +346,7 @@ void llvm_gcda_emit_function(uint32_t ident, const cha write_string(function_name); } +COMPILER_RT_VISIBILITY void llvm_gcda_emit_arcs(uint32_t num_counters, uint64_t *counters) { uint32_t i; uint64_t *old_ctrs = NULL; @@ -394,6 +398,7 @@ void llvm_gcda_emit_arcs(uint32_t num_counters, uint64 #endif } +COMPILER_RT_VISIBILITY void llvm_gcda_summary_info() { const uint32_t obj_summary_len = 9; /* Length for gcov compatibility. */ uint32_t i; @@ -447,6 +452,7 @@ void llvm_gcda_summary_info() { #endif } +COMPILER_RT_VISIBILITY void llvm_gcda_end_file() { /* Write out EOF record. */ if (output_file) { @@ -459,6 +465,7 @@ void llvm_gcda_end_file() { unmap_file(); } + fflush(output_file); lprofUnlockFd(fd); fclose(output_file); output_file = NULL; @@ -471,6 +478,7 @@ void llvm_gcda_end_file() { #endif } +COMPILER_RT_VISIBILITY void llvm_register_writeout_function(writeout_fn fn) { struct writeout_fn_node *new_node = malloc(sizeof(struct writeout_fn_node)); new_node->fn = fn; @@ -484,6 +492,7 @@ void llvm_register_writeout_function(writeout_fn fn) { } } +COMPILER_RT_VISIBILITY void llvm_writeout_files(void) { struct writeout_fn_node *curr = writeout_fn_head; @@ -493,6 +502,7 @@ void llvm_writeout_files(void) { } } +COMPILER_RT_VISIBILITY void llvm_delete_writeout_function_list(void) { while (writeout_fn_head) { struct writeout_fn_node *node = writeout_fn_head; @@ -503,6 +513,7 @@ void llvm_delete_writeout_function_list(void) { writeout_fn_head = writeout_fn_tail = NULL; } +COMPILER_RT_VISIBILITY void llvm_register_flush_function(flush_fn fn) { struct flush_fn_node *new_node = malloc(sizeof(struct flush_fn_node)); new_node->fn = fn; @@ -516,6 +527,7 @@ void llvm_register_flush_function(flush_fn fn) { } } +COMPILER_RT_VISIBILITY void __gcov_flush() { struct flush_fn_node *curr = flush_fn_head; @@ -525,6 +537,7 @@ void __gcov_flush() { } } +COMPILER_RT_VISIBILITY void llvm_delete_flush_function_list(void) { while (flush_fn_head) { struct flush_fn_node *node = flush_fn_head; @@ -535,6 +548,7 @@ void llvm_delete_flush_function_list(void) { flush_fn_head = flush_fn_tail = NULL; } +COMPILER_RT_VISIBILITY void llvm_gcov_init(writeout_fn wfn, flush_fn ffn) { static int atexit_ran = 0; Modified: projects/clang600-import/contrib/libc++/CREDITS.TXT ============================================================================== --- projects/clang600-import/contrib/libc++/CREDITS.TXT Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/CREDITS.TXT Sat Jan 6 23:44:14 2018 (r327657) @@ -101,7 +101,7 @@ E: nico.rieck@gmail.com D: Windows fixes N: Jon Roelofs -E: jonathan@codesourcery.com +E: jroelofS@jroelofs.com D: Remote testing, Newlib port, baremetal/single-threaded support. N: Jonathan Sauer Modified: projects/clang600-import/contrib/libc++/include/__config ============================================================================== --- projects/clang600-import/contrib/libc++/include/__config Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/__config Sat Jan 6 23:44:14 2018 (r327657) @@ -461,9 +461,13 @@ namespace std { #endif #if __has_builtin(__builtin_launder) -#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER +#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER #endif +#if !__is_identifier(__has_unique_object_representations) +#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS +#endif + #elif defined(_LIBCPP_COMPILER_GCC) #define _ALIGNAS(x) __attribute__((__aligned__(x))) @@ -547,9 +551,13 @@ namespace std { #endif #if _GNUC_VER >= 700 -#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER +#define _LIBCPP_COMPILER_HAS_BUILTIN_LAUNDER #endif +#if _GNUC_VER >= 700 +#define _LIBCPP_HAS_UNIQUE_OBJECT_REPRESENTATIONS +#endif + #elif defined(_LIBCPP_COMPILER_MSVC) #define _LIBCPP_TOSTRING2(x) #x @@ -980,9 +988,10 @@ template struct __static_assert_check {}; #define _LIBCPP_NODISCARD_AFTER_CXX17 #endif -// FIXME: Remove all usages of this macro once compilers catch up. -#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606L) -# define _LIBCPP_HAS_NO_INLINE_VARIABLES +#if _LIBCPP_STD_VER > 14 && defined(__cpp_inline_variables) && (__cpp_inline_variables >= 201606L) +# define _LIBCPP_INLINE_VAR inline +#else +# define _LIBCPP_INLINE_VAR #endif #ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES Modified: projects/clang600-import/contrib/libc++/include/__functional_base ============================================================================== --- projects/clang600-import/contrib/libc++/include/__functional_base Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/__functional_base Sat Jan 6 23:44:14 2018 (r327657) @@ -564,7 +564,7 @@ struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { }; #if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_MEMORY) extern const allocator_arg_t allocator_arg; #else -constexpr allocator_arg_t allocator_arg = allocator_arg_t(); +/* _LIBCPP_INLINE_VAR */ constexpr allocator_arg_t allocator_arg = allocator_arg_t(); #endif // uses_allocator @@ -601,7 +601,7 @@ struct _LIBCPP_TEMPLATE_VIS uses_allocator #if _LIBCPP_STD_VER > 14 template -constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value; +_LIBCPP_INLINE_VAR constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value; #endif #ifndef _LIBCPP_CXX03_LANG Modified: projects/clang600-import/contrib/libc++/include/__mutex_base ============================================================================== --- projects/clang600-import/contrib/libc++/include/__mutex_base Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/__mutex_base Sat Jan 6 23:44:14 2018 (r327657) @@ -82,9 +82,9 @@ extern const adopt_lock_t adopt_lock; #else -constexpr defer_lock_t defer_lock = defer_lock_t(); -constexpr try_to_lock_t try_to_lock = try_to_lock_t(); -constexpr adopt_lock_t adopt_lock = adopt_lock_t(); +/* _LIBCPP_INLINE_VAR */ constexpr defer_lock_t defer_lock = defer_lock_t(); +/* _LIBCPP_INLINE_VAR */ constexpr try_to_lock_t try_to_lock = try_to_lock_t(); +/* _LIBCPP_INLINE_VAR */ constexpr adopt_lock_t adopt_lock = adopt_lock_t(); #endif Modified: projects/clang600-import/contrib/libc++/include/chrono ============================================================================== --- projects/clang600-import/contrib/libc++/include/chrono Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/chrono Sat Jan 6 23:44:14 2018 (r327657) @@ -26,7 +26,7 @@ duration_cast(const duration& fd); template struct treat_as_floating_point : is_floating_point {}; -template constexpr bool treat_as_floating_point_v +template inline constexpr bool treat_as_floating_point_v = treat_as_floating_point::value; // C++17 template @@ -419,7 +419,8 @@ template struct _LIBCPP_TEMPLATE_VIS treat_as_floating_point : is_floating_point<_Rep> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool treat_as_floating_point_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool treat_as_floating_point_v = treat_as_floating_point<_Rep>::value; #endif Modified: projects/clang600-import/contrib/libc++/include/functional ============================================================================== --- projects/clang600-import/contrib/libc++/include/functional Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/functional Sat Jan 6 23:44:14 2018 (r327657) @@ -213,9 +213,9 @@ template struct is_bind_expression; template struct is_placeholder; // See C++14 20.9.9, Function object binders -template constexpr bool is_bind_expression_v +template inline constexpr bool is_bind_expression_v = is_bind_expression::value; // C++17 -template constexpr int is_placeholder_v +template inline constexpr int is_placeholder_v = is_placeholder::value; // C++17 @@ -1991,7 +1991,7 @@ template struct _LIBCPP_TEMPLATE_VIS is_bin #if _LIBCPP_STD_VER > 14 template -constexpr size_t is_bind_expression_v = is_bind_expression<_Tp>::value; +_LIBCPP_INLINE_VAR constexpr size_t is_bind_expression_v = is_bind_expression<_Tp>::value; #endif template struct __is_placeholder : public integral_constant {}; @@ -2000,7 +2000,7 @@ template struct _LIBCPP_TEMPLATE_VIS is_pla #if _LIBCPP_STD_VER > 14 template -constexpr size_t is_placeholder_v = is_placeholder<_Tp>::value; +_LIBCPP_INLINE_VAR constexpr size_t is_placeholder_v = is_placeholder<_Tp>::value; #endif namespace placeholders @@ -2020,16 +2020,16 @@ _LIBCPP_FUNC_VIS extern const __ph<8> _8; _LIBCPP_FUNC_VIS extern const __ph<9> _9; _LIBCPP_FUNC_VIS extern const __ph<10> _10; #else -constexpr __ph<1> _1{}; -constexpr __ph<2> _2{}; -constexpr __ph<3> _3{}; -constexpr __ph<4> _4{}; -constexpr __ph<5> _5{}; -constexpr __ph<6> _6{}; -constexpr __ph<7> _7{}; -constexpr __ph<8> _8{}; -constexpr __ph<9> _9{}; -constexpr __ph<10> _10{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<1> _1{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<2> _2{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<3> _3{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<4> _4{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<5> _5{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<6> _6{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<7> _7{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<8> _8{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<9> _9{}; +/* _LIBCPP_INLINE_VAR */ constexpr __ph<10> _10{}; #endif // defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_BIND) } // placeholders Modified: projects/clang600-import/contrib/libc++/include/memory ============================================================================== --- projects/clang600-import/contrib/libc++/include/memory Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/memory Sat Jan 6 23:44:14 2018 (r327657) @@ -18,7 +18,7 @@ namespace std { struct allocator_arg_t { }; -constexpr allocator_arg_t allocator_arg = allocator_arg_t(); +inline constexpr allocator_arg_t allocator_arg = allocator_arg_t(); template struct uses_allocator; @@ -630,6 +630,9 @@ template template struct hash; template struct hash >; template struct hash >; + +template + inline constexpr bool uses_allocator_v = uses_allocator::value; // Pointer safety enum class pointer_safety { relaxed, preferred, strict }; Modified: projects/clang600-import/contrib/libc++/include/mutex ============================================================================== --- projects/clang600-import/contrib/libc++/include/mutex Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/mutex Sat Jan 6 23:44:14 2018 (r327657) @@ -91,9 +91,9 @@ struct defer_lock_t {}; struct try_to_lock_t {}; struct adopt_lock_t {}; -constexpr defer_lock_t defer_lock{}; -constexpr try_to_lock_t try_to_lock{}; -constexpr adopt_lock_t adopt_lock{}; +inline constexpr defer_lock_t defer_lock{}; +inline constexpr try_to_lock_t try_to_lock{}; +inline constexpr adopt_lock_t adopt_lock{}; template class lock_guard Modified: projects/clang600-import/contrib/libc++/include/optional ============================================================================== --- projects/clang600-import/contrib/libc++/include/optional Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/optional Sat Jan 6 23:44:14 2018 (r327657) @@ -22,7 +22,7 @@ namespace std { // 23.6.4, no-value state indicator struct nullopt_t{see below }; - constexpr nullopt_t nullopt(unspecified ); + inline constexpr nullopt_t nullopt(unspecified ); // 23.6.5, class bad_optional_access class bad_optional_access; @@ -195,7 +195,7 @@ struct nullopt_t _LIBCPP_INLINE_VISIBILITY constexpr explicit nullopt_t(__secret_tag, __secret_tag) noexcept {} }; -/* inline */ constexpr nullopt_t nullopt{nullopt_t::__secret_tag{}, nullopt_t::__secret_tag{}}; +_LIBCPP_INLINE_VAR constexpr nullopt_t nullopt{nullopt_t::__secret_tag{}, nullopt_t::__secret_tag{}}; template ::value> struct __optional_destruct_base; Modified: projects/clang600-import/contrib/libc++/include/ratio ============================================================================== --- projects/clang600-import/contrib/libc++/include/ratio Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/ratio Sat Jan 6 23:44:14 2018 (r327657) @@ -63,17 +63,17 @@ typedef ratio< 1000000000000000000000, 1> zetta; // typedef ratio<1000000000000000000000000, 1> yotta; // not supported // 20.11.5, ratio comparison - template constexpr bool ratio_equal_v + template inline constexpr bool ratio_equal_v = ratio_equal::value; // C++17 - template constexpr bool ratio_not_equal_v + template inline constexpr bool ratio_not_equal_v = ratio_not_equal::value; // C++17 - template constexpr bool ratio_less_v + template inline constexpr bool ratio_less_v = ratio_less::value; // C++17 - template constexpr bool ratio_less_equal_v + template inline constexpr bool ratio_less_equal_v = ratio_less_equal::value; // C++17 - template constexpr bool ratio_greater_v + template inline constexpr bool ratio_greater_v = ratio_greater::value; // C++17 - template constexpr bool ratio_greater_equal_v + template inline constexpr bool ratio_greater_equal_v = ratio_greater_equal::value; // C++17 } */ @@ -501,22 +501,28 @@ struct __ratio_gcd }; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool ratio_equal_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_equal_v = ratio_equal<_R1, _R2>::value; -template _LIBCPP_CONSTEXPR bool ratio_not_equal_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_not_equal_v = ratio_not_equal<_R1, _R2>::value; -template _LIBCPP_CONSTEXPR bool ratio_less_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_less_v = ratio_less<_R1, _R2>::value; -template _LIBCPP_CONSTEXPR bool ratio_less_equal_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_less_equal_v = ratio_less_equal<_R1, _R2>::value; -template _LIBCPP_CONSTEXPR bool ratio_greater_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_greater_v = ratio_greater<_R1, _R2>::value; -template _LIBCPP_CONSTEXPR bool ratio_greater_equal_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool ratio_greater_equal_v = ratio_greater_equal<_R1, _R2>::value; #endif Modified: projects/clang600-import/contrib/libc++/include/system_error ============================================================================== --- projects/clang600-import/contrib/libc++/include/system_error Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/system_error Sat Jan 6 23:44:14 2018 (r327657) @@ -47,10 +47,10 @@ template struct is_error_condition_enum : public false_type {}; template -constexpr size_t is_error_condition_enum_v = is_error_condition_enum<_Tp>::value; // C++17 +inline constexpr size_t is_error_condition_enum_v = is_error_condition_enum<_Tp>::value; // C++17 template -constexpr size_t is_error_code_enum_v = is_error_code_enum<_Tp>::value; // C++17 +inline constexpr size_t is_error_code_enum_v = is_error_code_enum<_Tp>::value; // C++17 class error_code { @@ -246,7 +246,7 @@ struct _LIBCPP_TEMPLATE_VIS is_error_code_enum #if _LIBCPP_STD_VER > 14 template -constexpr size_t is_error_code_enum_v = is_error_code_enum<_Tp>::value; +_LIBCPP_INLINE_VAR constexpr size_t is_error_code_enum_v = is_error_code_enum<_Tp>::value; #endif // is_error_condition_enum @@ -257,7 +257,7 @@ struct _LIBCPP_TEMPLATE_VIS is_error_condition_enum #if _LIBCPP_STD_VER > 14 template -constexpr size_t is_error_condition_enum_v = is_error_condition_enum<_Tp>::value; +_LIBCPP_INLINE_VAR constexpr size_t is_error_condition_enum_v = is_error_condition_enum<_Tp>::value; #endif // Some error codes are not present on all platforms, so we provide equivalents Modified: projects/clang600-import/contrib/libc++/include/tuple ============================================================================== --- projects/clang600-import/contrib/libc++/include/tuple Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/tuple Sat Jan 6 23:44:14 2018 (r327657) @@ -70,7 +70,7 @@ class tuple { (public) void swap(tuple&) noexcept(AND(swap(declval(), declval())...)); }; -const unspecified ignore; +inline constexpr unspecified ignore; template tuple make_tuple(T&&...); // constexpr in C++14 template tuple forward_as_tuple(T&&...) noexcept; // constexpr in C++14 @@ -87,7 +87,7 @@ template template class tuple_size; // undefined template class tuple_size>; template - constexpr size_t tuple_size_v = tuple_size::value; // C++17 + inline constexpr size_t tuple_size_v = tuple_size::value; // C++17 template class tuple_element; // undefined template class tuple_element>; template @@ -1079,7 +1079,7 @@ struct __ignore_t }; namespace { - constexpr __ignore_t ignore = __ignore_t(); + _LIBCPP_INLINE_VAR constexpr __ignore_t ignore = __ignore_t(); } template @@ -1368,7 +1368,7 @@ pair<_T1, _T2>::pair(piecewise_construct_t, #if _LIBCPP_STD_VER > 14 template -constexpr size_t tuple_size_v = tuple_size<_Tp>::value; +_LIBCPP_INLINE_VAR constexpr size_t tuple_size_v = tuple_size<_Tp>::value; #define _LIBCPP_NOEXCEPT_RETURN(...) noexcept(noexcept(__VA_ARGS__)) { return __VA_ARGS__; } Modified: projects/clang600-import/contrib/libc++/include/type_traits ============================================================================== --- projects/clang600-import/contrib/libc++/include/type_traits Sat Jan 6 23:24:52 2018 (r327656) +++ projects/clang600-import/contrib/libc++/include/type_traits Sat Jan 6 23:44:14 2018 (r327657) @@ -132,6 +132,8 @@ namespace std template struct has_virtual_destructor; + template struct has_unique_object_representations; // C++17 + // Relationships between types: template struct is_same; template struct is_base_of; @@ -223,173 +225,175 @@ namespace std using void_t = void; // C++17 // See C++14 20.10.4.1, primary type categories - template constexpr bool is_void_v + template inline constexpr bool is_void_v = is_void::value; // C++17 - template constexpr bool is_null_pointer_v + template inline constexpr bool is_null_pointer_v = is_null_pointer::value; // C++17 - template constexpr bool is_integral_v + template inline constexpr bool is_integral_v = is_integral::value; // C++17 - template constexpr bool is_floating_point_v + template inline constexpr bool is_floating_point_v = is_floating_point::value; // C++17 - template constexpr bool is_array_v + template inline constexpr bool is_array_v = is_array::value; // C++17 - template constexpr bool is_pointer_v + template inline constexpr bool is_pointer_v = is_pointer::value; // C++17 - template constexpr bool is_lvalue_reference_v + template inline constexpr bool is_lvalue_reference_v = is_lvalue_reference::value; // C++17 - template constexpr bool is_rvalue_reference_v + template inline constexpr bool is_rvalue_reference_v = is_rvalue_reference::value; // C++17 - template constexpr bool is_member_object_pointer_v + template inline constexpr bool is_member_object_pointer_v = is_member_object_pointer::value; // C++17 - template constexpr bool is_member_function_pointer_v + template inline constexpr bool is_member_function_pointer_v = is_member_function_pointer::value; // C++17 - template constexpr bool is_enum_v + template inline constexpr bool is_enum_v = is_enum::value; // C++17 - template constexpr bool is_union_v + template inline constexpr bool is_union_v = is_union::value; // C++17 - template constexpr bool is_class_v + template inline constexpr bool is_class_v = is_class::value; // C++17 - template constexpr bool is_function_v + template inline constexpr bool is_function_v = is_function::value; // C++17 // See C++14 20.10.4.2, composite type categories - template constexpr bool is_reference_v + template inline constexpr bool is_reference_v = is_reference::value; // C++17 - template constexpr bool is_arithmetic_v + template inline constexpr bool is_arithmetic_v = is_arithmetic::value; // C++17 - template constexpr bool is_fundamental_v + template inline constexpr bool is_fundamental_v = is_fundamental::value; // C++17 - template constexpr bool is_object_v + template inline constexpr bool is_object_v = is_object::value; // C++17 - template constexpr bool is_scalar_v + template inline constexpr bool is_scalar_v = is_scalar::value; // C++17 - template constexpr bool is_compound_v + template inline constexpr bool is_compound_v = is_compound::value; // C++17 - template constexpr bool is_member_pointer_v + template inline constexpr bool is_member_pointer_v = is_member_pointer::value; // C++17 // See C++14 20.10.4.3, type properties - template constexpr bool is_const_v + template inline constexpr bool is_const_v = is_const::value; // C++17 - template constexpr bool is_volatile_v + template inline constexpr bool is_volatile_v = is_volatile::value; // C++17 - template constexpr bool is_trivial_v + template inline constexpr bool is_trivial_v = is_trivial::value; // C++17 - template constexpr bool is_trivially_copyable_v + template inline constexpr bool is_trivially_copyable_v = is_trivially_copyable::value; // C++17 - template constexpr bool is_standard_layout_v + template inline constexpr bool is_standard_layout_v = is_standard_layout::value; // C++17 - template constexpr bool is_pod_v + template inline constexpr bool is_pod_v = is_pod::value; // C++17 - template constexpr bool is_literal_type_v + template inline constexpr bool is_literal_type_v = is_literal_type::value; // C++17 - template constexpr bool is_empty_v + template inline constexpr bool is_empty_v = is_empty::value; // C++17 - template constexpr bool is_polymorphic_v + template inline constexpr bool is_polymorphic_v = is_polymorphic::value; // C++17 - template constexpr bool is_abstract_v + template inline constexpr bool is_abstract_v = is_abstract::value; // C++17 - template constexpr bool is_final_v + template inline constexpr bool is_final_v = is_final::value; // C++17 - template constexpr bool is_aggregate_v + template inline constexpr bool is_aggregate_v = is_aggregate::value; // C++17 - template constexpr bool is_signed_v + template inline constexpr bool is_signed_v = is_signed::value; // C++17 - template constexpr bool is_unsigned_v + template inline constexpr bool is_unsigned_v = is_unsigned::value; // C++17 - template constexpr bool is_constructible_v + template inline constexpr bool is_constructible_v = is_constructible::value; // C++17 - template constexpr bool is_default_constructible_v + template inline constexpr bool is_default_constructible_v = is_default_constructible::value; // C++17 - template constexpr bool is_copy_constructible_v + template inline constexpr bool is_copy_constructible_v = is_copy_constructible::value; // C++17 - template constexpr bool is_move_constructible_v + template inline constexpr bool is_move_constructible_v = is_move_constructible::value; // C++17 - template constexpr bool is_assignable_v + template inline constexpr bool is_assignable_v = is_assignable::value; // C++17 - template constexpr bool is_copy_assignable_v + template inline constexpr bool is_copy_assignable_v = is_copy_assignable::value; // C++17 - template constexpr bool is_move_assignable_v + template inline constexpr bool is_move_assignable_v = is_move_assignable::value; // C++17 - template constexpr bool is_swappable_with_v + template inline constexpr bool is_swappable_with_v = is_swappable_with::value; // C++17 - template constexpr bool is_swappable_v + template inline constexpr bool is_swappable_v = is_swappable::value; // C++17 - template constexpr bool is_destructible_v + template inline constexpr bool is_destructible_v = is_destructible::value; // C++17 - template constexpr bool is_trivially_constructible_v + template inline constexpr bool is_trivially_constructible_v = is_trivially_constructible::value; // C++17 - template constexpr bool is_trivially_default_constructible_v + template inline constexpr bool is_trivially_default_constructible_v = is_trivially_default_constructible::value; // C++17 - template constexpr bool is_trivially_copy_constructible_v + template inline constexpr bool is_trivially_copy_constructible_v = is_trivially_copy_constructible::value; // C++17 - template constexpr bool is_trivially_move_constructible_v + template inline constexpr bool is_trivially_move_constructible_v = is_trivially_move_constructible::value; // C++17 - template constexpr bool is_trivially_assignable_v + template inline constexpr bool is_trivially_assignable_v = is_trivially_assignable::value; // C++17 - template constexpr bool is_trivially_copy_assignable_v + template inline constexpr bool is_trivially_copy_assignable_v = is_trivially_copy_assignable::value; // C++17 - template constexpr bool is_trivially_move_assignable_v + template inline constexpr bool is_trivially_move_assignable_v = is_trivially_move_assignable::value; // C++17 - template constexpr bool is_trivially_destructible_v + template inline constexpr bool is_trivially_destructible_v = is_trivially_destructible::value; // C++17 - template constexpr bool is_nothrow_constructible_v + template inline constexpr bool is_nothrow_constructible_v = is_nothrow_constructible::value; // C++17 - template constexpr bool is_nothrow_default_constructible_v + template inline constexpr bool is_nothrow_default_constructible_v = is_nothrow_default_constructible::value; // C++17 - template constexpr bool is_nothrow_copy_constructible_v + template inline constexpr bool is_nothrow_copy_constructible_v = is_nothrow_copy_constructible::value; // C++17 - template constexpr bool is_nothrow_move_constructible_v + template inline constexpr bool is_nothrow_move_constructible_v = is_nothrow_move_constructible::value; // C++17 - template constexpr bool is_nothrow_assignable_v + template inline constexpr bool is_nothrow_assignable_v = is_nothrow_assignable::value; // C++17 - template constexpr bool is_nothrow_copy_assignable_v + template inline constexpr bool is_nothrow_copy_assignable_v = is_nothrow_copy_assignable::value; // C++17 - template constexpr bool is_nothrow_move_assignable_v + template inline constexpr bool is_nothrow_move_assignable_v = is_nothrow_move_assignable::value; // C++17 - template constexpr bool is_nothrow_swappable_with_v + template inline constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with::value; // C++17 - template constexpr bool is_nothrow_swappable_v + template inline constexpr bool is_nothrow_swappable_v = is_nothrow_swappable::value; // C++17 - template constexpr bool is_nothrow_destructible_v + template inline constexpr bool is_nothrow_destructible_v = is_nothrow_destructible::value; // C++17 - template constexpr bool has_virtual_destructor_v + template inline constexpr bool has_virtual_destructor_v = has_virtual_destructor::value; // C++17 + template inline constexpr bool has_unique_object_representations_v // C++17 + = has_unique_object_representations::value; // See C++14 20.10.5, type property queries - template constexpr size_t alignment_of_v + template inline constexpr size_t alignment_of_v = alignment_of::value; // C++17 - template constexpr size_t rank_v + template inline constexpr size_t rank_v = rank::value; // C++17 - template constexpr size_t extent_v + template inline constexpr size_t extent_v = extent::value; // C++17 // See C++14 20.10.6, type relations - template constexpr bool is_same_v + template inline constexpr bool is_same_v = is_same::value; // C++17 - template constexpr bool is_base_of_v + template inline constexpr bool is_base_of_v = is_base_of::value; // C++17 - template constexpr bool is_convertible_v + template inline constexpr bool is_convertible_v = is_convertible::value; // C++17 - template constexpr bool is_invocable_v + template inline constexpr bool is_invocable_v = is_invocable::value; // C++17 - template constexpr bool is_invocable_r_v + template inline constexpr bool is_invocable_r_v = is_invocable_r::value; // C++17 - template constexpr bool is_nothrow_invocable_v + template inline constexpr bool is_nothrow_invocable_v = is_nothrow_invocable::value; // C++17 - template constexpr bool is_nothrow_invocable_r_v + template inline constexpr bool is_nothrow_invocable_r_v = is_nothrow_invocable_r::value; // C++17 // [meta.logical], logical operator traits: template struct conjunction; // C++17 template - constexpr bool conjunction_v = conjunction::value; // C++17 + inline constexpr bool conjunction_v = conjunction::value; // C++17 template struct disjunction; // C++17 template - constexpr bool disjunction_v = disjunction::value; // C++17 + inline constexpr bool disjunction_v = disjunction::value; // C++17 template struct negation; // C++17 template - constexpr bool negation_v = negation::value; // C++17 + inline constexpr bool negation_v = negation::value; // C++17 } @@ -619,7 +623,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_co template struct _LIBCPP_TEMPLATE_VIS is_const<_Tp const> : public true_type {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_const_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_const_v = is_const<_Tp>::value; #endif @@ -629,7 +634,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_vo template struct _LIBCPP_TEMPLATE_VIS is_volatile<_Tp volatile> : public true_type {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_volatile_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_volatile_v = is_volatile<_Tp>::value; #endif @@ -666,7 +672,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_vo : public __libcpp_is_void::type> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_void_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_void_v = is_void<_Tp>::value; #endif @@ -683,7 +690,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_nu : public __is_nullptr_t_impl::type> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_null_pointer_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_null_pointer_v = is_null_pointer<_Tp>::value; #endif #endif @@ -717,7 +725,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_in : public __libcpp_is_integral::type> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_integral_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_integral_v = is_integral<_Tp>::value; #endif @@ -732,7 +741,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_fl : public __libcpp_is_floating_point::type> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_floating_point_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_floating_point_v = is_floating_point<_Tp>::value; #endif @@ -746,7 +756,8 @@ template struct _LIBCPP_TEMPLA : public true_type {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_array_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_array_v = is_array<_Tp>::value; #endif @@ -759,7 +770,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_po : public __libcpp_is_pointer::type> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_pointer_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_pointer_v = is_pointer<_Tp>::value; #endif @@ -780,13 +792,16 @@ template struct _LIBCPP_TEMPLATE_VIS is_re #endif #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_reference_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_reference_v = is_reference<_Tp>::value; -template _LIBCPP_CONSTEXPR bool is_lvalue_reference_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value; -template _LIBCPP_CONSTEXPR bool is_rvalue_reference_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value; #endif // is_union @@ -805,7 +820,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_un #endif #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_union_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_union_v = is_union<_Tp>::value; #endif @@ -830,7 +846,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_cl #endif #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_class_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_class_v = is_class<_Tp>::value; #endif @@ -840,7 +857,8 @@ template struct _LIBCPP_TEMPLAT template struct _LIBCPP_TEMPLATE_VIS is_same<_Tp, _Tp> : public true_type {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_same_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_same_v = is_same<_Tp, _Up>::value; #endif @@ -870,7 +888,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_fu : public __libcpp_is_function<_Tp> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_function_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_function_v = is_function<_Tp>::value; #endif @@ -897,7 +916,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_me : public __libcpp_is_member_function_pointer::type>::type {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_member_function_pointer_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_function_pointer_v = is_member_function_pointer<_Tp>::value; #endif @@ -910,7 +930,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_me : public __libcpp_is_member_pointer::type> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_member_pointer_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_pointer_v = is_member_pointer<_Tp>::value; #endif @@ -921,7 +942,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_me !is_member_function_pointer<_Tp>::value> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_member_object_pointer_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_member_object_pointer_v = is_member_object_pointer<_Tp>::value; #endif @@ -949,7 +971,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_en #endif #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_enum_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_enum_v = is_enum<_Tp>::value; #endif @@ -960,7 +983,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_ar is_floating_point<_Tp>::value> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_arithmetic_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_arithmetic_v = is_arithmetic<_Tp>::value; #endif @@ -972,7 +996,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_fu is_arithmetic<_Tp>::value> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_fundamental_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_fundamental_v = is_fundamental<_Tp>::value; #endif @@ -988,7 +1013,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_sc template <> struct _LIBCPP_TEMPLATE_VIS is_scalar : public true_type {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_scalar_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_scalar_v = is_scalar<_Tp>::value; #endif @@ -1001,7 +1027,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_ob is_class<_Tp>::value > {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_object_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_object_v = is_object<_Tp>::value; #endif @@ -1011,7 +1038,8 @@ template struct _LIBCPP_TEMPLATE_VIS is_co : public integral_constant::value> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_compound_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_compound_v = is_compound<_Tp>::value; #endif @@ -1210,7 +1238,8 @@ template struct __libcpp_is_signed<_Tp, fa template struct _LIBCPP_TEMPLATE_VIS is_signed : public __libcpp_is_signed<_Tp> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_signed_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_signed_v = is_signed<_Tp>::value; #endif @@ -1230,7 +1259,8 @@ template struct __libcpp_is_unsigned<_Tp, template struct _LIBCPP_TEMPLATE_VIS is_unsigned : public __libcpp_is_unsigned<_Tp> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR bool is_unsigned_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR bool is_unsigned_v = is_unsigned<_Tp>::value; #endif @@ -1244,7 +1274,8 @@ template struct _LIBCPP_TEMPLA : public integral_constant::value + 1> {}; #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) -template _LIBCPP_CONSTEXPR size_t rank_v +template +_LIBCPP_INLINE_VAR _LIBCPP_CONSTEXPR size_t rank_v = rank<_Tp>::value; #endif @@ -1262,7 +1293,8 @@ template struct : public integral_constant::value> {}; *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***