From owner-svn-src-vendor@freebsd.org Wed Aug 24 04:57:31 2016 Return-Path: Delivered-To: svn-src-vendor@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 853ABBC30F2; Wed, 24 Aug 2016 04:57:31 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id 289FA1906; Wed, 24 Aug 2016 04:57:31 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7O4vUsw043752; Wed, 24 Aug 2016 04:57:30 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7O4vUlf043748; Wed, 24 Aug 2016 04:57:30 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201608240457.u7O4vUlf043748@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 24 Aug 2016 04:57:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304732 - in vendor/sqlite3/dist: . tea tea/doc tea/generic tea/tclconfig tea/win 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.22 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: Wed, 24 Aug 2016 04:57:31 -0000 Author: cy Date: Wed Aug 24 04:57:29 2016 New Revision: 304732 URL: https://svnweb.freebsd.org/changeset/base/304732 Log: Import sqlite3-3.14.1 (3140100) Added: vendor/sqlite3/dist/Makefile.msc (contents, props changed) vendor/sqlite3/dist/Replace.cs vendor/sqlite3/dist/compile (contents, props changed) vendor/sqlite3/dist/sqlite3.rc vendor/sqlite3/dist/tea/ vendor/sqlite3/dist/tea/Makefile.in (contents, props changed) vendor/sqlite3/dist/tea/README vendor/sqlite3/dist/tea/aclocal.m4 vendor/sqlite3/dist/tea/configure (contents, props changed) vendor/sqlite3/dist/tea/configure.ac vendor/sqlite3/dist/tea/doc/ vendor/sqlite3/dist/tea/doc/sqlite3.n vendor/sqlite3/dist/tea/generic/ vendor/sqlite3/dist/tea/generic/tclsqlite3.c (contents, props changed) vendor/sqlite3/dist/tea/license.terms vendor/sqlite3/dist/tea/pkgIndex.tcl.in (contents, props changed) vendor/sqlite3/dist/tea/tclconfig/ vendor/sqlite3/dist/tea/tclconfig/install-sh vendor/sqlite3/dist/tea/tclconfig/tcl.m4 vendor/sqlite3/dist/tea/win/ vendor/sqlite3/dist/tea/win/makefile.vc (contents, props changed) vendor/sqlite3/dist/tea/win/nmakehlp.c (contents, props changed) vendor/sqlite3/dist/tea/win/rules.vc Modified: vendor/sqlite3/dist/Makefile.am vendor/sqlite3/dist/Makefile.in vendor/sqlite3/dist/configure vendor/sqlite3/dist/configure.ac vendor/sqlite3/dist/shell.c vendor/sqlite3/dist/sqlite3.c vendor/sqlite3/dist/sqlite3.h vendor/sqlite3/dist/sqlite3ext.h Modified: vendor/sqlite3/dist/Makefile.am ============================================================================== --- vendor/sqlite3/dist/Makefile.am Wed Aug 24 04:56:56 2016 (r304731) +++ vendor/sqlite3/dist/Makefile.am Wed Aug 24 04:57:29 2016 (r304732) @@ -1,5 +1,5 @@ -AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE +AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ @SESSION_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE lib_LTLIBRARIES = libsqlite3.la libsqlite3_la_SOURCES = sqlite3.c Modified: vendor/sqlite3/dist/Makefile.in ============================================================================== --- vendor/sqlite3/dist/Makefile.in Wed Aug 24 04:56:56 2016 (r304731) +++ vendor/sqlite3/dist/Makefile.in Wed Aug 24 04:57:29 2016 (r304732) @@ -305,6 +305,7 @@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ READLINE_LIBS = @READLINE_LIBS@ SED = @SED@ +SESSION_FLAGS = @SESSION_FLAGS@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ @@ -362,7 +363,7 @@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ -AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE +AM_CFLAGS = @THREADSAFE_FLAGS@ @DYNAMIC_EXTENSION_FLAGS@ @FTS5_FLAGS@ @JSON1_FLAGS@ @SESSION_FLAGS@ -DSQLITE_ENABLE_FTS3 -DSQLITE_ENABLE_RTREE lib_LTLIBRARIES = libsqlite3.la libsqlite3_la_SOURCES = sqlite3.c libsqlite3_la_LDFLAGS = -no-undefined -version-info 8:6:8 Added: vendor/sqlite3/dist/Makefile.msc ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/sqlite3/dist/Makefile.msc Wed Aug 24 04:57:29 2016 (r304732) @@ -0,0 +1,971 @@ +#### DO NOT EDIT #### +# This makefile is automatically generated from the Makefile.msc at +# the root of the canonical SQLite source tree (not the +# amalgamation tarball) using the tool/mkmsvcmin.tcl +# script. +# + +# +# nmake Makefile for SQLite +# +############################################################################### +############################## START OF OPTIONS ############################### +############################################################################### + +# The toplevel directory of the source tree. This is the directory +# that contains this "Makefile.msc". +# +TOP = . + + +# Set this non-0 to enable full warnings (-W4, etc) when compiling. +# +!IFNDEF USE_FULLWARN +USE_FULLWARN = 0 +!ENDIF + +# Set this non-0 to enable full runtime error checks (-RTC1, etc). This +# has no effect if (any) optimizations are enabled. +# +!IFNDEF USE_RUNTIME_CHECKS +USE_RUNTIME_CHECKS = 0 +!ENDIF + +# Set this non-0 to use "stdcall" calling convention for the core library +# and shell executable. +# +!IFNDEF USE_STDCALL +USE_STDCALL = 0 +!ENDIF + +# Set this non-0 to have the shell executable link against the core dynamic +# link library. +# +!IFNDEF DYNAMIC_SHELL +DYNAMIC_SHELL = 0 +!ENDIF + +# Set this non-0 to enable extra code that attempts to detect misuse of the +# SQLite API. +# +!IFNDEF API_ARMOR +API_ARMOR = 0 +!ENDIF + +# If necessary, create a list of harmless compiler warnings to disable when +# compiling the various tools. For the SQLite source code itself, warnings, +# if any, will be disabled from within it. +# +!IFNDEF NO_WARN +!IF $(USE_FULLWARN)!=0 +NO_WARN = -wd4054 -wd4055 -wd4100 -wd4127 -wd4130 -wd4152 -wd4189 -wd4206 +NO_WARN = $(NO_WARN) -wd4210 -wd4232 -wd4305 -wd4306 -wd4702 -wd4706 +!ENDIF +!ENDIF + +# Set this non-0 to use the library paths and other options necessary for +# Windows Phone 8.1. +# +!IFNDEF USE_WP81_OPTS +USE_WP81_OPTS = 0 +!ENDIF + +# Set this non-0 to split the SQLite amalgamation file into chunks to +# be used for debugging with Visual Studio. +# +!IFNDEF SPLIT_AMALGAMATION +SPLIT_AMALGAMATION = 0 +!ENDIF + + +# Set this non-0 to dynamically link to the MSVC runtime library. +# +!IFNDEF USE_CRT_DLL +USE_CRT_DLL = 0 +!ENDIF + +# Set this non-0 to link to the RPCRT4 library. +# +!IFNDEF USE_RPCRT4_LIB +USE_RPCRT4_LIB = 0 +!ENDIF + +# Set this non-0 to generate assembly code listings for the source code +# files. +# +!IFNDEF USE_LISTINGS +USE_LISTINGS = 0 +!ENDIF + +# Set this non-0 to attempt setting the native compiler automatically +# for cross-compiling the command line tools needed during the compilation +# process. +# +!IFNDEF XCOMPILE +XCOMPILE = 0 +!ENDIF + +# Set this non-0 to use the native libraries paths for cross-compiling +# the command line tools needed during the compilation process. +# +!IFNDEF USE_NATIVE_LIBPATHS +USE_NATIVE_LIBPATHS = 0 +!ENDIF + +# Set this 0 to skip the compiling and embedding of version resources. +# +!IFNDEF USE_RC +USE_RC = 1 +!ENDIF + +# Set this non-0 to compile binaries suitable for the WinRT environment. +# This setting does not apply to any binaries that require Tcl to operate +# properly (i.e. the text fixture, etc). +# +!IFNDEF FOR_WINRT +FOR_WINRT = 0 +!ENDIF + +# Set this non-0 to compile binaries suitable for the UWP environment. +# This setting does not apply to any binaries that require Tcl to operate +# properly (i.e. the text fixture, etc). +# +!IFNDEF FOR_UWP +FOR_UWP = 0 +!ENDIF + +# Set this non-0 to compile binaries suitable for the Windows 10 platform. +# +!IFNDEF FOR_WIN10 +FOR_WIN10 = 0 +!ENDIF + + +# Set this to non-0 to create and use PDBs. +# +!IFNDEF SYMBOLS +SYMBOLS = 1 +!ENDIF + +# Set this to non-0 to use the SQLite debugging heap subsystem. +# +!IFNDEF MEMDEBUG +MEMDEBUG = 0 +!ENDIF + +# Set this to non-0 to use the Win32 native heap subsystem. +# +!IFNDEF WIN32HEAP +WIN32HEAP = 0 +!ENDIF + +# Set this to non-0 to enable OSTRACE() macros, which can be useful when +# debugging. +# +!IFNDEF OSTRACE +OSTRACE = 0 +!ENDIF + +# Set this to one of the following values to enable various debugging +# features. Each level includes the debugging options from the previous +# levels. Currently, the recognized values for DEBUG are: +# +# 0 == NDEBUG: Disables assert() and other runtime diagnostics. +# 1 == SQLITE_ENABLE_API_ARMOR: extra attempts to detect misuse of the API. +# 2 == Disables NDEBUG and all optimizations and then enables PDBs. +# 3 == SQLITE_DEBUG: Enables various diagnostics messages and code. +# 4 == SQLITE_WIN32_MALLOC_VALIDATE: Validate the Win32 native heap per call. +# 5 == SQLITE_DEBUG_OS_TRACE: Enables output from the OSTRACE() macros. +# 6 == SQLITE_ENABLE_IOTRACE: Enables output from the IOTRACE() macros. +# +!IFNDEF DEBUG +DEBUG = 0 +!ENDIF + +# Enable use of available compiler optimizations? Normally, this should be +# non-zero. Setting this to zero, thus disabling all compiler optimizations, +# can be useful for testing. +# +!IFNDEF OPTIMIZATIONS +OPTIMIZATIONS = 2 +!ENDIF + +# Set this to non-0 to enable support for the session extension. +# +!IFNDEF SESSION +SESSION = 0 +!ENDIF + +# Set the source code file to be used by executables and libraries when +# they need the amalgamation. +# +!IFNDEF SQLITE3C +!IF $(SPLIT_AMALGAMATION)!=0 +SQLITE3C = sqlite3-all.c +!ELSE +SQLITE3C = sqlite3.c +!ENDIF +!ENDIF + +# Set the include code file to be used by executables and libraries when +# they need SQLite. +# +!IFNDEF SQLITE3H +SQLITE3H = sqlite3.h +!ENDIF + +# This is the name to use for the SQLite dynamic link library (DLL). +# +!IFNDEF SQLITE3DLL +!IF $(FOR_WIN10)!=0 +SQLITE3DLL = winsqlite3.dll +!ELSE +SQLITE3DLL = sqlite3.dll +!ENDIF +!ENDIF + +# This is the name to use for the SQLite import library (LIB). +# +!IFNDEF SQLITE3LIB +!IF $(FOR_WIN10)!=0 +SQLITE3LIB = winsqlite3.lib +!ELSE +SQLITE3LIB = sqlite3.lib +!ENDIF +!ENDIF + +# This is the name to use for the SQLite shell executable (EXE). +# +!IFNDEF SQLITE3EXE +!IF $(FOR_WIN10)!=0 +SQLITE3EXE = winsqlite3shell.exe +!ELSE +SQLITE3EXE = sqlite3.exe +!ENDIF +!ENDIF + +# This is the argument used to set the program database (PDB) file for the +# SQLite shell executable (EXE). +# +!IFNDEF SQLITE3EXEPDB +!IF $(FOR_WIN10)!=0 +SQLITE3EXEPDB = +!ELSE +SQLITE3EXEPDB = /pdb:sqlite3sh.pdb +!ENDIF +!ENDIF + +# These are the "standard" SQLite compilation options used when compiling for +# the Windows platform. +# +!IFNDEF OPT_FEATURE_FLAGS +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS3=1 +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_RTREE=1 +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_COLUMN_METADATA=1 +!ENDIF + +# Should the session extension be enabled? If so, add compilation options +# to enable it. +# +!IF $(SESSION)!=0 +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_SESSION=1 +OPT_FEATURE_FLAGS = $(OPT_FEATURE_FLAGS) -DSQLITE_ENABLE_PREUPDATE_HOOK=1 +!ENDIF + +# These are the "extended" SQLite compilation options used when compiling for +# the Windows 10 platform. +# +!IFNDEF EXT_FEATURE_FLAGS +!IF $(FOR_WIN10)!=0 +EXT_FEATURE_FLAGS = $(EXT_FEATURE_FLAGS) -DSQLITE_ENABLE_FTS4=1 +EXT_FEATURE_FLAGS = $(EXT_FEATURE_FLAGS) -DSQLITE_SYSTEM_MALLOC=1 +EXT_FEATURE_FLAGS = $(EXT_FEATURE_FLAGS) -DSQLITE_OMIT_LOCALTIME=1 +!ELSE +EXT_FEATURE_FLAGS = +!ENDIF +!ENDIF + +############################################################################### +############################### END OF OPTIONS ################################ +############################################################################### + +# When compiling for the Windows 10 platform, the PLATFORM macro must be set +# to an appropriate value (e.g. x86, x64, arm, arm64, etc). +# +!IF $(FOR_WIN10)!=0 +!IFNDEF PLATFORM +!ERROR Using the FOR_WIN10 option requires a value for PLATFORM. +!ENDIF +!ENDIF + +# This assumes that MSVC is always installed in 32-bit Program Files directory +# and sets the variable for use in locating other 32-bit installs accordingly. +# +PROGRAMFILES_X86 = $(VCINSTALLDIR)\..\.. +PROGRAMFILES_X86 = $(PROGRAMFILES_X86:\\=\) + +# Check for the predefined command macro CC. This should point to the compiler +# binary for the target platform. If it is not defined, simply define it to +# the legacy default value 'cl.exe'. +# +!IFNDEF CC +CC = cl.exe +!ENDIF + +# Check for the predefined command macro CSC. This should point to a working +# C Sharp compiler binary. If it is not defined, simply define it to the +# legacy default value 'csc.exe'. +# +!IFNDEF CSC +CSC = csc.exe +!ENDIF + +# Check for the command macro LD. This should point to the linker binary for +# the target platform. If it is not defined, simply define it to the legacy +# default value 'link.exe'. +# +!IFNDEF LD +LD = link.exe +!ENDIF + +# Check for the predefined command macro RC. This should point to the resource +# compiler binary for the target platform. If it is not defined, simply define +# it to the legacy default value 'rc.exe'. +# +!IFNDEF RC +RC = rc.exe +!ENDIF + +# Check for the MSVC runtime library path macro. Otherwise, this value will +# default to the 'lib' directory underneath the MSVC installation directory. +# +!IFNDEF CRTLIBPATH +CRTLIBPATH = $(VCINSTALLDIR)\lib +!ENDIF + +CRTLIBPATH = $(CRTLIBPATH:\\=\) + +# Check for the command macro NCC. This should point to the compiler binary +# for the platform the compilation process is taking place on. If it is not +# defined, simply define it to have the same value as the CC macro. When +# cross-compiling, it is suggested that this macro be modified via the command +# line (since nmake itself does not provide a built-in method to guess it). +# For example, to use the x86 compiler when cross-compiling for x64, a command +# line similar to the following could be used (all on one line): +# +# nmake /f Makefile.msc sqlite3.dll +# XCOMPILE=1 USE_NATIVE_LIBPATHS=1 +# +# Alternatively, the full path and file name to the compiler binary for the +# platform the compilation process is taking place may be specified (all on +# one line): +# +# nmake /f Makefile.msc sqlite3.dll +# "NCC=""%VCINSTALLDIR%\bin\cl.exe""" +# USE_NATIVE_LIBPATHS=1 +# +!IFDEF NCC +NCC = $(NCC:\\=\) +!ELSEIF $(XCOMPILE)!=0 +NCC = "$(VCINSTALLDIR)\bin\$(CC)" +NCC = $(NCC:\\=\) +!ELSE +NCC = $(CC) +!ENDIF + +# Check for the MSVC native runtime library path macro. Otherwise, +# this value will default to the 'lib' directory underneath the MSVC +# installation directory. +# +!IFNDEF NCRTLIBPATH +NCRTLIBPATH = $(VCINSTALLDIR)\lib +!ENDIF + +NCRTLIBPATH = $(NCRTLIBPATH:\\=\) + +# Check for the Platform SDK library path macro. Otherwise, this +# value will default to the 'lib' directory underneath the Windows +# SDK installation directory (the environment variable used appears +# to be available when using Visual C++ 2008 or later via the +# command line). +# +!IFNDEF NSDKLIBPATH +NSDKLIBPATH = $(WINDOWSSDKDIR)\lib +!ENDIF + +NSDKLIBPATH = $(NSDKLIBPATH:\\=\) + +# Check for the UCRT library path macro. Otherwise, this value will +# default to the version-specific, platform-specific 'lib' directory +# underneath the Windows SDK installation directory. +# +!IFNDEF UCRTLIBPATH +UCRTLIBPATH = $(WINDOWSSDKDIR)\lib\$(WINDOWSSDKLIBVERSION)\ucrt\$(PLATFORM) +!ENDIF + +UCRTLIBPATH = $(UCRTLIBPATH:\\=\) + +# C compiler and options for use in building executables that +# will run on the platform that is doing the build. +# +!IF $(USE_FULLWARN)!=0 +BCC = $(NCC) -nologo -W4 $(CCOPTS) $(BCCOPTS) +!ELSE +BCC = $(NCC) -nologo -W3 $(CCOPTS) $(BCCOPTS) +!ENDIF + +# Check if assembly code listings should be generated for the source +# code files to be compiled. +# +!IF $(USE_LISTINGS)!=0 +BCC = $(BCC) -FAcs +!ENDIF + +# Check if the native library paths should be used when compiling +# the command line tools used during the compilation process. If +# so, set the necessary macro now. +# +!IF $(USE_NATIVE_LIBPATHS)!=0 +NLTLIBPATHS = "/LIBPATH:$(NCRTLIBPATH)" "/LIBPATH:$(NSDKLIBPATH)" + +!IFDEF NUCRTLIBPATH +NUCRTLIBPATH = $(NUCRTLIBPATH:\\=\) +NLTLIBPATHS = $(NLTLIBPATHS) "/LIBPATH:$(NUCRTLIBPATH)" +!ENDIF +!ENDIF + +# C compiler and options for use in building executables that +# will run on the target platform. (BCC and TCC are usually the +# same unless your are cross-compiling.) +# +!IF $(USE_FULLWARN)!=0 +TCC = $(CC) -nologo -W4 -DINCLUDE_MSVC_H=1 $(CCOPTS) $(TCCOPTS) +!ELSE +TCC = $(CC) -nologo -W3 $(CCOPTS) $(TCCOPTS) +!ENDIF + +TCC = $(TCC) -DSQLITE_OS_WIN=1 -I. -I$(TOP) -fp:precise +RCC = $(RC) -DSQLITE_OS_WIN=1 -I. -I$(TOP) $(RCOPTS) $(RCCOPTS) + +# Check if we want to use the "stdcall" calling convention when compiling. +# This is not supported by the compilers for non-x86 platforms. It should +# also be noted here that building any target with these "stdcall" options +# will most likely fail if the Tcl library is also required. This is due +# to how the Tcl library functions are declared and exported (i.e. without +# an explicit calling convention, which results in "cdecl"). +# +!IF $(USE_STDCALL)!=0 || $(FOR_WIN10)!=0 +!IF "$(PLATFORM)"=="x86" +CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall +SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall +!ELSE +!IFNDEF PLATFORM +CORE_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall +SHELL_CCONV_OPTS = -Gz -DSQLITE_CDECL=__cdecl -DSQLITE_APICALL=__stdcall -DSQLITE_CALLBACK=__stdcall -DSQLITE_SYSAPI=__stdcall +!ELSE +CORE_CCONV_OPTS = +SHELL_CCONV_OPTS = +!ENDIF +!ENDIF +!ELSE +CORE_CCONV_OPTS = +SHELL_CCONV_OPTS = +!ENDIF + +# These are additional compiler options used for the core library. +# +!IFNDEF CORE_COMPILE_OPTS +!IF $(DYNAMIC_SHELL)!=0 || $(FOR_WIN10)!=0 +CORE_COMPILE_OPTS = $(CORE_CCONV_OPTS) -DSQLITE_API=__declspec(dllexport) +!ELSE +CORE_COMPILE_OPTS = $(CORE_CCONV_OPTS) +!ENDIF +!ENDIF + +# These are the additional targets that the core library should depend on +# when linking. +# +!IFNDEF CORE_LINK_DEP +!IF $(DYNAMIC_SHELL)!=0 +CORE_LINK_DEP = +!ELSEIF $(FOR_WIN10)==0 || "$(PLATFORM)"=="x86" +CORE_LINK_DEP = sqlite3.def +!ELSE +CORE_LINK_DEP = +!ENDIF +!ENDIF + +# These are additional linker options used for the core library. +# +!IFNDEF CORE_LINK_OPTS +!IF $(DYNAMIC_SHELL)!=0 +CORE_LINK_OPTS = +!ELSEIF $(FOR_WIN10)==0 || "$(PLATFORM)"=="x86" +CORE_LINK_OPTS = /DEF:sqlite3.def +!ELSE +CORE_LINK_OPTS = +!ENDIF +!ENDIF + +# These are additional compiler options used for the shell executable. +# +!IFNDEF SHELL_COMPILE_OPTS +!IF $(DYNAMIC_SHELL)!=0 || $(FOR_WIN10)!=0 +SHELL_COMPILE_OPTS = $(SHELL_CCONV_OPTS) -DSQLITE_API=__declspec(dllimport) +!ELSE +SHELL_COMPILE_OPTS = $(SHELL_CCONV_OPTS) +!ENDIF +!ENDIF + +# This is the source code that the shell executable should be compiled +# with. +# +!IFNDEF SHELL_CORE_SRC +!IF $(DYNAMIC_SHELL)!=0 || $(FOR_WIN10)!=0 +SHELL_CORE_SRC = +!ELSE +SHELL_CORE_SRC = $(SQLITE3C) +!ENDIF +!ENDIF + +# This is the core library that the shell executable should depend on. +# +!IFNDEF SHELL_CORE_DEP +!IF $(DYNAMIC_SHELL)!=0 || $(FOR_WIN10)!=0 +SHELL_CORE_DEP = $(SQLITE3DLL) +!ELSE +SHELL_CORE_DEP = +!ENDIF +!ENDIF + +# This is the core library that the shell executable should link with. +# +!IFNDEF SHELL_CORE_LIB +!IF $(DYNAMIC_SHELL)!=0 || $(FOR_WIN10)!=0 +SHELL_CORE_LIB = $(SQLITE3LIB) +!ELSE +SHELL_CORE_LIB = +!ENDIF +!ENDIF + +# These are additional linker options used for the shell executable. +# +!IFNDEF SHELL_LINK_OPTS +SHELL_LINK_OPTS = $(SHELL_CORE_LIB) +!ENDIF + +# Check if assembly code listings should be generated for the source +# code files to be compiled. +# +!IF $(USE_LISTINGS)!=0 +TCC = $(TCC) -FAcs +!ENDIF + +# When compiling the library for use in the WinRT environment, +# the following compile-time options must be used as well to +# disable use of Win32 APIs that are not available and to enable +# use of Win32 APIs that are specific to Windows 8 and/or WinRT. +# +!IF $(FOR_WINRT)!=0 +TCC = $(TCC) -DSQLITE_OS_WINRT=1 +RCC = $(RCC) -DSQLITE_OS_WINRT=1 +TCC = $(TCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP +RCC = $(RCC) -DWINAPI_FAMILY=WINAPI_FAMILY_APP +!ENDIF + +# C compiler options for the Windows 10 platform (needs MSVC 2015). +# +!IF $(FOR_WIN10)!=0 +TCC = $(TCC) /d2guard4 -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE +BCC = $(BCC) /d2guard4 -D_ARM_WINAPI_PARTITION_DESKTOP_SDK_AVAILABLE +!ENDIF + +# Also, we need to dynamically link to the correct MSVC runtime +# when compiling for WinRT (e.g. debug or release) OR if the +# USE_CRT_DLL option is set to force dynamically linking to the +# MSVC runtime library. +# +!IF $(FOR_WINRT)!=0 || $(USE_CRT_DLL)!=0 +!IF $(DEBUG)>1 +TCC = $(TCC) -MDd +BCC = $(BCC) -MDd +!ELSE +TCC = $(TCC) -MD +BCC = $(BCC) -MD +!ENDIF +!ELSE +!IF $(DEBUG)>1 +TCC = $(TCC) -MTd +BCC = $(BCC) -MTd +!ELSE +TCC = $(TCC) -MT +BCC = $(BCC) -MT +!ENDIF +!ENDIF + + +# Define -DNDEBUG to compile without debugging (i.e., for production usage) +# Omitting the define will cause extra debugging code to be inserted and +# includes extra comments when "EXPLAIN stmt" is used. +# +!IF $(DEBUG)==0 +TCC = $(TCC) -DNDEBUG +BCC = $(BCC) -DNDEBUG +RCC = $(RCC) -DNDEBUG +!ENDIF + +!IF $(DEBUG)>0 || $(API_ARMOR)!=0 || $(FOR_WIN10)!=0 +TCC = $(TCC) -DSQLITE_ENABLE_API_ARMOR=1 +RCC = $(RCC) -DSQLITE_ENABLE_API_ARMOR=1 +!ENDIF + +!IF $(DEBUG)>2 +TCC = $(TCC) -DSQLITE_DEBUG=1 +RCC = $(RCC) -DSQLITE_DEBUG=1 +!ENDIF + +!IF $(DEBUG)>4 || $(OSTRACE)!=0 +TCC = $(TCC) -DSQLITE_FORCE_OS_TRACE=1 -DSQLITE_DEBUG_OS_TRACE=1 +RCC = $(RCC) -DSQLITE_FORCE_OS_TRACE=1 -DSQLITE_DEBUG_OS_TRACE=1 +!ENDIF + +!IF $(DEBUG)>5 +TCC = $(TCC) -DSQLITE_ENABLE_IOTRACE=1 +RCC = $(RCC) -DSQLITE_ENABLE_IOTRACE=1 +!ENDIF + +# Prevent warnings about "insecure" MSVC runtime library functions +# being used. +# +TCC = $(TCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS +BCC = $(BCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS +RCC = $(RCC) -D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS + +# Prevent warnings about "deprecated" POSIX functions being used. +# +TCC = $(TCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS +BCC = $(BCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS +RCC = $(RCC) -D_CRT_NONSTDC_NO_DEPRECATE -D_CRT_NONSTDC_NO_WARNINGS + +# Use the SQLite debugging heap subsystem? +# +!IF $(MEMDEBUG)!=0 +TCC = $(TCC) -DSQLITE_MEMDEBUG=1 +RCC = $(RCC) -DSQLITE_MEMDEBUG=1 + +# Use native Win32 heap subsystem instead of malloc/free? +# +!ELSEIF $(WIN32HEAP)!=0 +TCC = $(TCC) -DSQLITE_WIN32_MALLOC=1 +RCC = $(RCC) -DSQLITE_WIN32_MALLOC=1 + +# Validate the heap on every call into the native Win32 heap subsystem? +# +!IF $(DEBUG)>3 +TCC = $(TCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 +RCC = $(RCC) -DSQLITE_WIN32_MALLOC_VALIDATE=1 +!ENDIF +!ENDIF + + +# Compiler options needed for programs that use the readline() library. +# +!IFNDEF READLINE_FLAGS +READLINE_FLAGS = -DHAVE_READLINE=0 +!ENDIF + +# The library that programs using readline() must link against. +# +!IFNDEF LIBREADLINE +LIBREADLINE = +!ENDIF + +# Should the database engine be compiled threadsafe +# +TCC = $(TCC) -DSQLITE_THREADSAFE=1 +RCC = $(RCC) -DSQLITE_THREADSAFE=1 + +# Do threads override each others locks by default (1), or do we test (-1) +# +TCC = $(TCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 +RCC = $(RCC) -DSQLITE_THREAD_OVERRIDE_LOCK=-1 + +# Any target libraries which libsqlite must be linked against +# +!IFNDEF TLIBS +TLIBS = +!ENDIF + +# Flags controlling use of the in memory btree implementation +# +# SQLITE_TEMP_STORE is 0 to force temporary tables to be in a file, 1 to +# default to file, 2 to default to memory, and 3 to force temporary +# tables to always be in memory. +# +TCC = $(TCC) -DSQLITE_TEMP_STORE=1 +RCC = $(RCC) -DSQLITE_TEMP_STORE=1 + +# Enable/disable loadable extensions, and other optional features +# based on configuration. (-DSQLITE_OMIT*, -DSQLITE_ENABLE*). +# The same set of OMIT and ENABLE flags should be passed to the +# LEMON parser generator and the mkkeywordhash tool as well. + +# These are the required SQLite compilation options used when compiling for +# the Windows platform. +# +REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_MAX_TRIGGER_DEPTH=100 + +# If we are linking to the RPCRT4 library, enable features that need it. +# +!IF $(USE_RPCRT4_LIB)!=0 +REQ_FEATURE_FLAGS = $(REQ_FEATURE_FLAGS) -DSQLITE_WIN32_USE_UUID=1 +!ENDIF + +# Add the required and optional SQLite compilation options into the command +# lines used to invoke the MSVC code and resource compilers. +# +TCC = $(TCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS) +RCC = $(RCC) $(REQ_FEATURE_FLAGS) $(OPT_FEATURE_FLAGS) $(EXT_FEATURE_FLAGS) + +# Add in any optional parameters specified on the commane line, e.g. +# nmake /f Makefile.msc all "OPTS=-DSQLITE_ENABLE_FOO=1 -DSQLITE_OMIT_FOO=1" +# +TCC = $(TCC) $(OPTS) +RCC = $(RCC) $(OPTS) + +# If compiling for debugging, add some defines. +# +!IF $(DEBUG)>1 +TCC = $(TCC) -D_DEBUG +BCC = $(BCC) -D_DEBUG +RCC = $(RCC) -D_DEBUG +!ENDIF + +# If optimizations are enabled or disabled (either implicitly or +# explicitly), add the necessary flags. +# +!IF $(DEBUG)>1 || $(OPTIMIZATIONS)==0 +TCC = $(TCC) -Od +BCC = $(BCC) -Od +!IF $(USE_RUNTIME_CHECKS)!=0 +TCC = $(TCC) -RTC1 +BCC = $(BCC) -RTC1 +!ENDIF +!ELSEIF $(OPTIMIZATIONS)>=3 +TCC = $(TCC) -Ox +BCC = $(BCC) -Ox +!ELSEIF $(OPTIMIZATIONS)==2 +TCC = $(TCC) -O2 +BCC = $(BCC) -O2 +!ELSEIF $(OPTIMIZATIONS)==1 +TCC = $(TCC) -O1 +BCC = $(BCC) -O1 +!ENDIF + +# If symbols are enabled (or compiling for debugging), enable PDBs. +# +!IF $(DEBUG)>1 || $(SYMBOLS)!=0 +TCC = $(TCC) -Zi +BCC = $(BCC) -Zi +!ENDIF + + +# Command line prefixes for compiling code, compiling resources, +# linking, etc. +# +LTCOMPILE = $(TCC) -Fo$@ +LTRCOMPILE = $(RCC) -r +LTLIB = lib.exe +LTLINK = $(TCC) -Fe$@ + +# If requested, link to the RPCRT4 library. +# +!IF $(USE_RPCRT4_LIB)!=0 +LTLINK = $(LTLINK) rpcrt4.lib +!ENDIF + +# If a platform was set, force the linker to target that. +# Note that the vcvars*.bat family of batch files typically +# set this for you. Otherwise, the linker will attempt +# to deduce the binary type based on the object files. +!IFDEF PLATFORM +LTLINKOPTS = /NOLOGO /MACHINE:$(PLATFORM) +LTLIBOPTS = /NOLOGO /MACHINE:$(PLATFORM) +!ELSE +LTLINKOPTS = /NOLOGO +LTLIBOPTS = /NOLOGO +!ENDIF + +# When compiling for use in the WinRT environment, the following +# linker option must be used to mark the executable as runnable +# only in the context of an application container. +# +!IF $(FOR_WINRT)!=0 +LTLINKOPTS = $(LTLINKOPTS) /APPCONTAINER +!IF "$(VISUALSTUDIOVERSION)"=="12.0" || "$(VISUALSTUDIOVERSION)"=="14.0" +!IFNDEF STORELIBPATH +!IF "$(PLATFORM)"=="x86" +STORELIBPATH = $(CRTLIBPATH)\store +!ELSEIF "$(PLATFORM)"=="x64" +STORELIBPATH = $(CRTLIBPATH)\store\amd64 +!ELSEIF "$(PLATFORM)"=="ARM" +STORELIBPATH = $(CRTLIBPATH)\store\arm +!ELSE +STORELIBPATH = $(CRTLIBPATH)\store +!ENDIF +!ENDIF +STORELIBPATH = $(STORELIBPATH:\\=\) +LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(STORELIBPATH)" +!ENDIF +!ENDIF + +# When compiling for Windows Phone 8.1, an extra library path is +# required. +# +!IF $(USE_WP81_OPTS)!=0 +!IFNDEF WP81LIBPATH +!IF "$(PLATFORM)"=="x86" +WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\x86 +!ELSEIF "$(PLATFORM)"=="ARM" +WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\ARM +!ELSE +WP81LIBPATH = $(PROGRAMFILES_X86)\Windows Phone Kits\8.1\lib\x86 +!ENDIF +!ENDIF +!ENDIF + +# When compiling for Windows Phone 8.1, some extra linker options +# are also required. +# +!IF $(USE_WP81_OPTS)!=0 +!IFDEF WP81LIBPATH +LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(WP81LIBPATH)" +!ENDIF +LTLINKOPTS = $(LTLINKOPTS) /DYNAMICBASE +LTLINKOPTS = $(LTLINKOPTS) WindowsPhoneCore.lib RuntimeObject.lib PhoneAppModelHost.lib +LTLINKOPTS = $(LTLINKOPTS) /NODEFAULTLIB:kernel32.lib /NODEFAULTLIB:ole32.lib +!ENDIF + +# When compiling for UWP or the Windows 10 platform, some extra linker +# options are also required. +# +!IF $(FOR_UWP)!=0 || $(FOR_WIN10)!=0 +LTLINKOPTS = $(LTLINKOPTS) /DYNAMICBASE /NODEFAULTLIB:kernel32.lib +LTLINKOPTS = $(LTLINKOPTS) mincore.lib +!IFDEF PSDKLIBPATH +LTLINKOPTS = $(LTLINKOPTS) "/LIBPATH:$(PSDKLIBPATH)" +!ENDIF +!ENDIF + +!IF $(FOR_WIN10)!=0 +LTLINKOPTS = $(LTLINKOPTS) /guard:cf "/LIBPATH:$(UCRTLIBPATH)" +!IF $(DEBUG)>1 +LTLINKOPTS = $(LTLINKOPTS) /NODEFAULTLIB:libucrtd.lib /DEFAULTLIB:ucrtd.lib +!ELSE +LTLINKOPTS = $(LTLINKOPTS) /NODEFAULTLIB:libucrt.lib /DEFAULTLIB:ucrt.lib +!ENDIF +!ENDIF + +# If either debugging or symbols are enabled, enable PDBs. +# +!IF $(DEBUG)>1 || $(SYMBOLS)!=0 +LDFLAGS = /DEBUG $(LDOPTS) +!ELSE +LDFLAGS = $(LDOPTS) +!ENDIF + + +# You should not have to change anything below this line +############################################################################### + + +# Object files for the amalgamation. +# +LIBOBJS1 = sqlite3.lo + +# Determine the real value of LIBOBJ based on the 'configure' script +# +LIBOBJ = $(LIBOBJS1) + +# Determine if embedded resource compilation and usage are enabled. +# +!IF $(USE_RC)!=0 +LIBRESOBJS = sqlite3res.lo +!ELSE +LIBRESOBJS = +!ENDIF + + +# Additional compiler options for the shell. These are only effective +# when the shell is not being dynamically linked. +# +!IF $(DYNAMIC_SHELL)==0 && $(FOR_WIN10)==0 +SHELL_COMPILE_OPTS = $(SHELL_COMPILE_OPTS) -DSQLITE_SHELL_JSON1 -DSQLITE_ENABLE_FTS4 -DSQLITE_ENABLE_EXPLAIN_COMMENTS +!ENDIF + + +# This is the default Makefile target. The objects listed here +# are what get build when you type just "make" with no arguments. +# +all: dll shell + +# Dynamic link library section. +# +dll: $(SQLITE3DLL) + +# Shell executable. +# +shell: $(SQLITE3EXE) + + +$(SQLITE3DLL): $(LIBOBJ) $(LIBRESOBJS) $(CORE_LINK_DEP) + $(LD) $(LDFLAGS) $(LTLINKOPTS) $(LTLIBPATHS) /DLL $(CORE_LINK_OPTS) /OUT:$@ $(LIBOBJ) $(LIBRESOBJS) $(LTLIBS) $(TLIBS) + +Replace.exe: + $(CSC) /target:exe $(TOP)\Replace.cs + +sqlite3.def: Replace.exe $(LIBOBJ) + echo EXPORTS > sqlite3.def + dumpbin /all $(LIBOBJ) \ + | .\Replace.exe "^\s+/EXPORT:_?(sqlite3_[^@,]*)(?:@\d+|,DATA)?$$" $$1 true \ + | sort >> sqlite3.def + +$(SQLITE3EXE): $(TOP)\shell.c $(SHELL_CORE_DEP) $(LIBRESOBJS) $(SHELL_CORE_SRC) $(SQLITE3H) + $(LTLINK) $(SHELL_COMPILE_OPTS) $(READLINE_FLAGS) $(TOP)\shell.c $(SHELL_CORE_SRC) \ + /link $(SQLITE3EXEPDB) $(LDFLAGS) $(LTLINKOPTS) $(SHELL_LINK_OPTS) $(LTLIBPATHS) $(LIBRESOBJS) $(LIBREADLINE) $(LTLIBS) $(TLIBS) + + +# Rule to build the amalgamation +# +sqlite3.lo: $(SQLITE3C) + $(LTCOMPILE) $(CORE_COMPILE_OPTS) -c $(SQLITE3C) + + +# Rule to build the Win32 resources object file. +# +!IF $(USE_RC)!=0 +_HASHCHAR=^# +!IF ![echo !IFNDEF VERSION > rcver.vc] && \ + ![for /F "delims=" %V in ('type "$(SQLITE3H)" ^| find "$(_HASHCHAR)define SQLITE_VERSION "') do (echo VERSION = ^^%V >> rcver.vc)] && \ + ![echo !ENDIF >> rcver.vc] +!INCLUDE rcver.vc +!ENDIF + +RESOURCE_VERSION = $(VERSION:^#=) +RESOURCE_VERSION = $(RESOURCE_VERSION:define=) +RESOURCE_VERSION = $(RESOURCE_VERSION:SQLITE_VERSION=) +RESOURCE_VERSION = $(RESOURCE_VERSION:"=) +RESOURCE_VERSION = $(RESOURCE_VERSION:.=,) + +$(LIBRESOBJS): $(TOP)\sqlite3.rc rcver.vc $(SQLITE3H) + echo #ifndef SQLITE_RESOURCE_VERSION > sqlite3rc.h + echo #define SQLITE_RESOURCE_VERSION $(RESOURCE_VERSION) >> sqlite3rc.h + echo #endif >> sqlite3rc.h + $(LTRCOMPILE) -fo $(LIBRESOBJS) -DRC_VERONLY $(TOP)\sqlite3.rc +!ENDIF + + +clean: + del /Q *.exp *.lo *.ilk *.lib *.obj *.ncb *.pdb *.sdf *.suo 2>NUL *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@freebsd.org Wed Aug 24 05:01:22 2016 Return-Path: Delivered-To: svn-src-vendor@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 32BC0BC32A1; Wed, 24 Aug 2016 05:01:22 +0000 (UTC) (envelope-from cy@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 mx1.freebsd.org (Postfix) with ESMTPS id DB0241CA5; Wed, 24 Aug 2016 05:01:21 +0000 (UTC) (envelope-from cy@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7O51LQ5044004; Wed, 24 Aug 2016 05:01:21 GMT (envelope-from cy@FreeBSD.org) Received: (from cy@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7O51LnD044003; Wed, 24 Aug 2016 05:01:21 GMT (envelope-from cy@FreeBSD.org) Message-Id: <201608240501.u7O51LnD044003@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: cy set sender to cy@FreeBSD.org using -f From: Cy Schubert Date: Wed, 24 Aug 2016 05:01:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304734 - vendor/sqlite3/sqlite-3140100 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.22 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: Wed, 24 Aug 2016 05:01:22 -0000 Author: cy Date: Wed Aug 24 05:01:20 2016 New Revision: 304734 URL: https://svnweb.freebsd.org/changeset/base/304734 Log: Tag import of sqlite3-3.14.1 (3140100). Added: vendor/sqlite3/sqlite-3140100/ - copied from r304733, vendor/sqlite3/dist/ From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:35:40 2016 Return-Path: Delivered-To: svn-src-vendor@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 66BA2BC5B7A; Wed, 24 Aug 2016 17:35:40 +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 mx1.freebsd.org (Postfix) with ESMTPS id 09AC91839; Wed, 24 Aug 2016 17:35:39 +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 u7OHZdJo036065; Wed, 24 Aug 2016 17:35:39 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHZb4g036048; Wed, 24 Aug 2016 17:35:37 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241735.u7OHZb4g036048@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:35:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304759 - in vendor/llvm/dist: docs include/llvm/Transforms/Scalar lib/Analysis lib/Target/AArch64 lib/Target/PowerPC lib/Transforms/Scalar lib/Transforms/Utils lib/Transforms/Vectorize... 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.22 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: Wed, 24 Aug 2016 17:35:40 -0000 Author: dim Date: Wed Aug 24 17:35:37 2016 New Revision: 304759 URL: https://svnweb.freebsd.org/changeset/base/304759 Log: Vendor import of llvm release_39 branch r279477: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279477 Added: vendor/llvm/dist/test/CodeGen/AArch64/ldst-paired-aliasing.ll vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/gather-root.ll Deleted: vendor/llvm/dist/test/Transforms/Reassociate/prev_insts_canonicalized.ll Modified: vendor/llvm/dist/docs/ReleaseNotes.rst vendor/llvm/dist/include/llvm/Transforms/Scalar/Reassociate.h vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp vendor/llvm/dist/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp vendor/llvm/dist/test/Analysis/ScalarEvolution/flags-from-poison.ll vendor/llvm/dist/test/CodeGen/AArch64/ldst-opt.ll vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-sibcall.ll vendor/llvm/dist/test/Transforms/Inline/inline_constprop.ll vendor/llvm/dist/test/Transforms/Reassociate/reassoc-intermediate-fnegs.ll vendor/llvm/dist/test/Transforms/Reassociate/xor_reassoc.ll Modified: vendor/llvm/dist/docs/ReleaseNotes.rst ============================================================================== --- vendor/llvm/dist/docs/ReleaseNotes.rst Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/docs/ReleaseNotes.rst Wed Aug 24 17:35:37 2016 (r304759) @@ -5,12 +5,6 @@ LLVM 3.9 Release Notes .. contents:: :local: -.. warning:: - These are in-progress notes for the upcoming LLVM 3.9 release. You may - prefer the `LLVM 3.8 Release Notes `_. - - Introduction ============ @@ -26,11 +20,6 @@ have questions or comments, the `LLVM De `_ is a good place to send them. -Note that if you are reading this file from a Subversion checkout or the main -LLVM web page, this document applies to the *next* release, not the current -one. To see the release notes for a specific release, please see the `releases -page `_. - Non-comprehensive list of changes in this release ================================================= * The LLVMContext gains a new runtime check (see @@ -45,10 +34,10 @@ Non-comprehensive list of changes in thi please see the documentation on :doc:`CMake`. For information about the CMake language there is also a :doc:`CMakePrimer` document available. -* .. note about C API functions LLVMParseBitcode, - LLVMParseBitcodeInContext, LLVMGetBitcodeModuleInContext and - LLVMGetBitcodeModule having been removed. LLVMGetTargetMachineData has been - removed (use LLVMGetDataLayout instead). +* C API functions LLVMParseBitcode, + LLVMParseBitcodeInContext, LLVMGetBitcodeModuleInContext and + LLVMGetBitcodeModule having been removed. LLVMGetTargetMachineData has been + removed (use LLVMGetDataLayout instead). * The C API function LLVMLinkModules has been removed. @@ -68,52 +57,35 @@ Non-comprehensive list of changes in thi iterator to the next instruction instead of ``void``. Targets that previously did ``MBB.erase(I); return;`` now probably want ``return MBB.erase(I);``. -* ``SelectionDAGISel::Select`` now returns ``void``. Out of tree targets will +* ``SelectionDAGISel::Select`` now returns ``void``. Out-of-tree targets will need to be updated to replace the argument node and remove any dead nodes in cases where they currently return an ``SDNode *`` from this interface. -* Raised the minimum required CMake version to 3.4.3. - * Added the MemorySSA analysis, which hopes to replace MemoryDependenceAnalysis. It should provide higher-quality results than MemDep, and be algorithmically faster than MemDep. Currently, GVNHoist (which is off by default) makes use of MemorySSA. -.. NOTE - For small 1-3 sentence descriptions, just add an entry at the end of - this list. If your description won't fit comfortably in one bullet - point (e.g. maybe you would like to give an example of the - functionality, or simply have a lot to talk about), see the `NOTE` below - for adding a new subsection. - -* ... next change ... - -.. NOTE - If you would like to document a larger change, then you can add a - subsection about it right here. You can copy the following boilerplate - and un-indent it (the indentation causes it to be inside this comment). - - Special New Feature - ------------------- - - Makes programs 10x faster by doing Special New Thing. +* The minimum density for lowering switches with jump tables has been reduced + from 40% to 10% for functions which are not marked ``optsize`` (that is, + compiled with ``-Os``). GCC ABI Tag ----------- -Recently, many of the Linux distributions (ex. `Fedora `_, +Recently, many of the Linux distributions (e.g. `Fedora `_, `Debian `_, `Ubuntu `_) have moved on to use the new `GCC ABI `_ to work around `C++11 incompatibilities in libstdc++ `_. This caused `incompatibility problems `_ -with other compilers (ex. Clang), which needed to be fixed, but due to the +with other compilers (e.g. Clang), which needed to be fixed, but due to the experimental nature of GCC's own implementation, it took a long time for it to -land in LLVM (`here `_ and -`here `_), not in time for the 3.8 release. +land in LLVM (`D18035 `_ and +`D17567 `_), not in time for the 3.8 release. -Those patches are now present in the 3.9.0 release and should be working on the +Those patches are now present in the 3.9.0 release and should be working in the majority of cases, as they have been tested thoroughly. However, some bugs were -`filled in GCC `_ and have not +`filed in GCC `_ and have not yet been fixed, so there may be corner cases not covered by either GCC or Clang. Bug fixes to those problems should be reported in Bugzilla (either LLVM or GCC), and patches to LLVM's trunk are very likely to be back-ported to future 3.9.x @@ -131,6 +103,10 @@ Changes to the LLVM IR ``llvm.masked.gather`` and ``llvm.masked.scatter`` were introduced to the LLVM IR to allow selective memory access for vector data types. +* The new ``notail`` attribute prevents optimization passes from adding ``tail`` + or ``musttail`` markers to a call. It is used to prevent tail call + optimization from being performed on the call. + Changes to LLVM's IPO model --------------------------- @@ -145,7 +121,7 @@ Support for ThinLTO ------------------- LLVM now supports ThinLTO compilation, which can be invoked by compiling -and linking with -flto=thin. The gold linker plugin, as well as linkers +and linking with ``-flto=thin``. The gold linker plugin, as well as linkers that use the new ThinLTO API in libLTO (like ld64), will transparently execute the ThinLTO backends in parallel threads. For more information on ThinLTO and the LLVM implementation, see the @@ -238,7 +214,7 @@ fixes:** Changes to the PowerPC Target ----------------------------- - Moved some optimizations from O3 to O2 (D18562) +* Moved some optimizations from O3 to O2 (D18562) * Enable sibling call optimization on ppc64 ELFv1/ELFv2 abi @@ -266,18 +242,6 @@ Changes to the AMDGPU Target * Mesa 11.0.x is no longer supported -Changes to the OCaml bindings ------------------------------ - - During this release ... - -Support for attribute 'notail' has been added ---------------------------------------------- - -This marker prevents optimization passes from adding 'tail' or -'musttail' markers to a call. It is used to prevent tail call -optimization from being performed on the call. - External Open Source Projects Using LLVM 3.9 ============================================ @@ -285,8 +249,6 @@ An exciting aspect of LLVM is that it is a lot of other language and tools projects. This section lists some of the projects that have already been updated to work with LLVM 3.9. -* A project - LDC - the LLVM-based D compiler ------------------------------- Modified: vendor/llvm/dist/include/llvm/Transforms/Scalar/Reassociate.h ============================================================================== --- vendor/llvm/dist/include/llvm/Transforms/Scalar/Reassociate.h Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/include/llvm/Transforms/Scalar/Reassociate.h Wed Aug 24 17:35:37 2016 (r304759) @@ -65,7 +65,7 @@ public: PreservedAnalyses run(Function &F, FunctionAnalysisManager &); private: - void BuildRankMap(Function &F, ReversePostOrderTraversal &RPOT); + void BuildRankMap(Function &F); unsigned getRank(Value *V); void canonicalizeOperands(Instruction *I); void ReassociateExpression(BinaryOperator *I); Modified: vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp ============================================================================== --- vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/lib/Analysis/ScalarEvolution.cpp Wed Aug 24 17:35:37 2016 (r304759) @@ -4822,6 +4822,10 @@ bool ScalarEvolution::isSCEVExprNeverPoi // from different loops, so that we know which loop to prove that I is // executed in. for (unsigned OpIndex = 0; OpIndex < I->getNumOperands(); ++OpIndex) { + // I could be an extractvalue from a call to an overflow intrinsic. + // TODO: We can do better here in some cases. + if (!isSCEVable(I->getOperand(OpIndex)->getType())) + return false; const SCEV *Op = getSCEV(I->getOperand(OpIndex)); if (auto *AddRec = dyn_cast(Op)) { bool AllOtherOpsLoopInvariant = true; Modified: vendor/llvm/dist/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp ============================================================================== --- vendor/llvm/dist/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp Wed Aug 24 17:35:37 2016 (r304759) @@ -1258,8 +1258,11 @@ AArch64LoadStoreOpt::findMatchingInsn(Ma if (MIIsUnscaled) { // If the unscaled offset isn't a multiple of the MemSize, we can't // pair the operations together: bail and keep looking. - if (MIOffset % MemSize) + if (MIOffset % MemSize) { + trackRegDefsUses(MI, ModifiedRegs, UsedRegs, TRI); + MemInsns.push_back(&MI); continue; + } MIOffset /= MemSize; } else { MIOffset *= MemSize; @@ -1424,9 +1427,6 @@ bool AArch64LoadStoreOpt::isMatchingUpda default: break; case AArch64::SUBXri: - // Negate the offset for a SUB instruction. - Offset *= -1; - // FALLTHROUGH case AArch64::ADDXri: // Make sure it's a vanilla immediate operand, not a relocation or // anything else we can't handle. @@ -1444,6 +1444,9 @@ bool AArch64LoadStoreOpt::isMatchingUpda bool IsPairedInsn = isPairedLdSt(MemMI); int UpdateOffset = MI.getOperand(2).getImm(); + if (MI.getOpcode() == AArch64::SUBXri) + UpdateOffset = -UpdateOffset; + // For non-paired load/store instructions, the immediate must fit in a // signed 9-bit integer. if (!IsPairedInsn && (UpdateOffset > 255 || UpdateOffset < -256)) @@ -1458,13 +1461,13 @@ bool AArch64LoadStoreOpt::isMatchingUpda break; int ScaledOffset = UpdateOffset / Scale; - if (ScaledOffset > 64 || ScaledOffset < -64) + if (ScaledOffset > 63 || ScaledOffset < -64) break; } // If we have a non-zero Offset, we check that it matches the amount // we're adding to the register. - if (!Offset || Offset == MI.getOperand(2).getImm()) + if (!Offset || Offset == UpdateOffset) return true; break; } Modified: vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp ============================================================================== --- vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/lib/Target/PowerPC/PPCISelLowering.cpp Wed Aug 24 17:35:37 2016 (r304759) @@ -4033,11 +4033,18 @@ PPCTargetLowering::IsEligibleForTailCall if (CalleeCC != CallingConv::Fast && CalleeCC != CallingConv::C) return false; - // Functions containing by val parameters are not supported. + // Caller contains any byval parameter is not supported. if (std::any_of(Ins.begin(), Ins.end(), [](const ISD::InputArg& IA) { return IA.Flags.isByVal(); })) return false; + // Callee contains any byval parameter is not supported, too. + // Note: This is a quick work around, because in some cases, e.g. + // caller's stack size > callee's stack size, we are still able to apply + // sibling call optimization. See: https://reviews.llvm.org/D23441#513574 + if (any_of(Outs, [](const ISD::OutputArg& OA) { return OA.Flags.isByVal(); })) + return false; + // No TCO/SCO on indirect call because Caller have to restore its TOC if (!isFunctionGlobalAddress(Callee) && !isa(Callee)) Modified: vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp ============================================================================== --- vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/lib/Transforms/Scalar/Reassociate.cpp Wed Aug 24 17:35:37 2016 (r304759) @@ -145,8 +145,7 @@ static BinaryOperator *isReassociableOp( return nullptr; } -void ReassociatePass::BuildRankMap( - Function &F, ReversePostOrderTraversal &RPOT) { +void ReassociatePass::BuildRankMap(Function &F) { unsigned i = 2; // Assign distinct ranks to function arguments. @@ -155,6 +154,7 @@ void ReassociatePass::BuildRankMap( DEBUG(dbgs() << "Calculated Rank[" << I->getName() << "] = " << i << "\n"); } + ReversePostOrderTraversal RPOT(&F); for (BasicBlock *BB : RPOT) { unsigned BBRank = RankMap[BB] = ++i << 16; @@ -2172,28 +2172,13 @@ void ReassociatePass::ReassociateExpress } PreservedAnalyses ReassociatePass::run(Function &F, FunctionAnalysisManager &) { - // Reassociate needs for each instruction to have its operands already - // processed, so we first perform a RPOT of the basic blocks so that - // when we process a basic block, all its dominators have been processed - // before. - ReversePostOrderTraversal RPOT(&F); - BuildRankMap(F, RPOT); + // Calculate the rank map for F. + BuildRankMap(F); MadeChange = false; - for (BasicBlock *BI : RPOT) { - // Use a worklist to keep track of which instructions have been processed - // (and which insts won't be optimized again) so when redoing insts, - // optimize insts rightaway which won't be processed later. - SmallSet Worklist; - - // Insert all instructions in the BB - for (Instruction &I : *BI) - Worklist.insert(&I); - + for (Function::iterator BI = F.begin(), BE = F.end(); BI != BE; ++BI) { // Optimize every instruction in the basic block. - for (BasicBlock::iterator II = BI->begin(), IE = BI->end(); II != IE;) { - // This instruction has been processed. - Worklist.erase(&*II); + for (BasicBlock::iterator II = BI->begin(), IE = BI->end(); II != IE;) if (isInstructionTriviallyDead(&*II)) { EraseInst(&*II++); } else { @@ -2202,22 +2187,27 @@ PreservedAnalyses ReassociatePass::run(F ++II; } - // If the above optimizations produced new instructions to optimize or - // made modifications which need to be redone, do them now if they won't - // be handled later. - while (!RedoInsts.empty()) { - Instruction *I = RedoInsts.pop_back_val(); - // Process instructions that won't be processed later, either - // inside the block itself or in another basic block (based on rank), - // since these will be processed later. - if ((I->getParent() != BI || !Worklist.count(I)) && - RankMap[I->getParent()] <= RankMap[BI]) { - if (isInstructionTriviallyDead(I)) - EraseInst(I); - else - OptimizeInst(I); - } - } + // Make a copy of all the instructions to be redone so we can remove dead + // instructions. + SetVector> ToRedo(RedoInsts); + // Iterate over all instructions to be reevaluated and remove trivially dead + // instructions. If any operand of the trivially dead instruction becomes + // dead mark it for deletion as well. Continue this process until all + // trivially dead instructions have been removed. + while (!ToRedo.empty()) { + Instruction *I = ToRedo.pop_back_val(); + if (isInstructionTriviallyDead(I)) + RecursivelyEraseDeadInsts(I, ToRedo); + } + + // Now that we have removed dead instructions, we can reoptimize the + // remaining instructions. + while (!RedoInsts.empty()) { + Instruction *I = RedoInsts.pop_back_val(); + if (isInstructionTriviallyDead(I)) + EraseInst(I); + else + OptimizeInst(I); } } Modified: vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp ============================================================================== --- vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/lib/Transforms/Utils/CloneFunction.cpp Wed Aug 24 17:35:37 2016 (r304759) @@ -566,6 +566,12 @@ void llvm::CloneAndPruneIntoFromInst(Fun if (!I) continue; + // Skip over non-intrinsic callsites, we don't want to remove any nodes from + // the CGSCC. + CallSite CS = CallSite(I); + if (CS && CS.getCalledFunction() && !CS.getCalledFunction()->isIntrinsic()) + continue; + // See if this instruction simplifies. Value *SimpleV = SimplifyInstruction(I, DL); if (!SimpleV) Modified: vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp ============================================================================== --- vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/lib/Transforms/Vectorize/SLPVectorizer.cpp Wed Aug 24 17:35:37 2016 (r304759) @@ -82,8 +82,13 @@ static cl::opt MinVectorRegSizeOpti "slp-min-reg-size", cl::init(128), cl::Hidden, cl::desc("Attempt to vectorize for this register size in bits")); -// FIXME: Set this via cl::opt to allow overriding. -static const unsigned RecursionMaxDepth = 12; +static cl::opt RecursionMaxDepth( + "slp-recursion-max-depth", cl::init(12), cl::Hidden, + cl::desc("Limit the recursion depth when building a vectorizable tree")); + +static cl::opt MinTreeSize( + "slp-min-tree-size", cl::init(3), cl::Hidden, + cl::desc("Only vectorize small trees if they are fully vectorizable")); // Limit the number of alias checks. The limit is chosen so that // it has no negative effect on the llvm benchmarks. @@ -1842,7 +1847,7 @@ int BoUpSLP::getTreeCost() { VectorizableTree.size() << ".\n"); // We only vectorize tiny trees if it is fully vectorizable. - if (VectorizableTree.size() < 3 && !isFullyVectorizableTinyTree()) { + if (VectorizableTree.size() < MinTreeSize && !isFullyVectorizableTinyTree()) { if (VectorizableTree.empty()) { assert(!ExternalUses.size() && "We should not have any external users"); } @@ -2124,11 +2129,61 @@ void BoUpSLP::reorderInputsAccordingToOp } void BoUpSLP::setInsertPointAfterBundle(ArrayRef VL) { - Instruction *VL0 = cast(VL[0]); - BasicBlock::iterator NextInst(VL0); - ++NextInst; - Builder.SetInsertPoint(VL0->getParent(), NextInst); - Builder.SetCurrentDebugLocation(VL0->getDebugLoc()); + + // Get the basic block this bundle is in. All instructions in the bundle + // should be in this block. + auto *Front = cast(VL.front()); + auto *BB = Front->getParent(); + assert(all_of(make_range(VL.begin(), VL.end()), [&](Value *V) -> bool { + return cast(V)->getParent() == BB; + })); + + // The last instruction in the bundle in program order. + Instruction *LastInst = nullptr; + + // Find the last instruction. The common case should be that BB has been + // scheduled, and the last instruction is VL.back(). So we start with + // VL.back() and iterate over schedule data until we reach the end of the + // bundle. The end of the bundle is marked by null ScheduleData. + if (BlocksSchedules.count(BB)) { + auto *Bundle = BlocksSchedules[BB]->getScheduleData(VL.back()); + if (Bundle && Bundle->isPartOfBundle()) + for (; Bundle; Bundle = Bundle->NextInBundle) + LastInst = Bundle->Inst; + } + + // LastInst can still be null at this point if there's either not an entry + // for BB in BlocksSchedules or there's no ScheduleData available for + // VL.back(). This can be the case if buildTree_rec aborts for various + // reasons (e.g., the maximum recursion depth is reached, the maximum region + // size is reached, etc.). ScheduleData is initialized in the scheduling + // "dry-run". + // + // If this happens, we can still find the last instruction by brute force. We + // iterate forwards from Front (inclusive) until we either see all + // instructions in the bundle or reach the end of the block. If Front is the + // last instruction in program order, LastInst will be set to Front, and we + // will visit all the remaining instructions in the block. + // + // One of the reasons we exit early from buildTree_rec is to place an upper + // bound on compile-time. Thus, taking an additional compile-time hit here is + // not ideal. However, this should be exceedingly rare since it requires that + // we both exit early from buildTree_rec and that the bundle be out-of-order + // (causing us to iterate all the way to the end of the block). + if (!LastInst) { + SmallPtrSet Bundle(VL.begin(), VL.end()); + for (auto &I : make_range(BasicBlock::iterator(Front), BB->end())) { + if (Bundle.erase(&I)) + LastInst = &I; + if (Bundle.empty()) + break; + } + } + + // Set the insertion point after the last instruction in the bundle. Set the + // debug location to Front. + Builder.SetInsertPoint(BB, next(BasicBlock::iterator(LastInst))); + Builder.SetCurrentDebugLocation(Front->getDebugLoc()); } Value *BoUpSLP::Gather(ArrayRef VL, VectorType *Ty) { @@ -2206,7 +2261,9 @@ Value *BoUpSLP::vectorizeTree(TreeEntry if (E->NeedToGather) { setInsertPointAfterBundle(E->Scalars); - return Gather(E->Scalars, VecTy); + auto *V = Gather(E->Scalars, VecTy); + E->VectorizedValue = V; + return V; } unsigned Opcode = getSameOpcode(E->Scalars); @@ -2253,7 +2310,10 @@ Value *BoUpSLP::vectorizeTree(TreeEntry E->VectorizedValue = V; return V; } - return Gather(E->Scalars, VecTy); + setInsertPointAfterBundle(E->Scalars); + auto *V = Gather(E->Scalars, VecTy); + E->VectorizedValue = V; + return V; } case Instruction::ExtractValue: { if (canReuseExtract(E->Scalars, Instruction::ExtractValue)) { @@ -2265,7 +2325,10 @@ Value *BoUpSLP::vectorizeTree(TreeEntry E->VectorizedValue = V; return propagateMetadata(V, E->Scalars); } - return Gather(E->Scalars, VecTy); + setInsertPointAfterBundle(E->Scalars); + auto *V = Gather(E->Scalars, VecTy); + E->VectorizedValue = V; + return V; } case Instruction::ZExt: case Instruction::SExt: Modified: vendor/llvm/dist/test/Analysis/ScalarEvolution/flags-from-poison.ll ============================================================================== --- vendor/llvm/dist/test/Analysis/ScalarEvolution/flags-from-poison.ll Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/test/Analysis/ScalarEvolution/flags-from-poison.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -688,3 +688,52 @@ outer.be: exit: ret void } + + +; PR28932: Don't assert on non-SCEV-able value %2. +%struct.anon = type { i8* } +@a = common global %struct.anon* null, align 8 +@b = common global i32 0, align 4 +declare { i32, i1 } @llvm.ssub.with.overflow.i32(i32, i32) +declare void @llvm.trap() +define i32 @pr28932() { +entry: + %.pre = load %struct.anon*, %struct.anon** @a, align 8 + %.pre7 = load i32, i32* @b, align 4 + br label %for.cond + +for.cond: ; preds = %cont6, %entry + %0 = phi i32 [ %3, %cont6 ], [ %.pre7, %entry ] + %1 = phi %struct.anon* [ %.ph, %cont6 ], [ %.pre, %entry ] + %tobool = icmp eq %struct.anon* %1, null + %2 = tail call { i32, i1 } @llvm.ssub.with.overflow.i32(i32 %0, i32 1) + %3 = extractvalue { i32, i1 } %2, 0 + %4 = extractvalue { i32, i1 } %2, 1 + %idxprom = sext i32 %3 to i64 + %5 = getelementptr inbounds %struct.anon, %struct.anon* %1, i64 0, i32 0 + %6 = load i8*, i8** %5, align 8 + %7 = getelementptr inbounds i8, i8* %6, i64 %idxprom + %8 = load i8, i8* %7, align 1 + br i1 %tobool, label %if.else, label %if.then + +if.then: ; preds = %for.cond + br i1 %4, label %trap, label %cont6 + +trap: ; preds = %if.else, %if.then + tail call void @llvm.trap() + unreachable + +if.else: ; preds = %for.cond + br i1 %4, label %trap, label %cont1 + +cont1: ; preds = %if.else + %conv5 = sext i8 %8 to i64 + %9 = inttoptr i64 %conv5 to %struct.anon* + store %struct.anon* %9, %struct.anon** @a, align 8 + br label %cont6 + +cont6: ; preds = %cont1, %if.then + %.ph = phi %struct.anon* [ %9, %cont1 ], [ %1, %if.then ] + store i32 %3, i32* @b, align 4 + br label %for.cond +} Modified: vendor/llvm/dist/test/CodeGen/AArch64/ldst-opt.ll ============================================================================== --- vendor/llvm/dist/test/CodeGen/AArch64/ldst-opt.ll Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/test/CodeGen/AArch64/ldst-opt.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -1,4 +1,4 @@ -; RUN: llc -mtriple=aarch64-linux-gnu -aarch64-atomic-cfg-tidy=0 -verify-machineinstrs -o - %s | FileCheck %s +; RUN: llc -mtriple=aarch64-linux-gnu -aarch64-atomic-cfg-tidy=0 -disable-lsr -verify-machineinstrs -o - %s | FileCheck %s ; This file contains tests for the AArch64 load/store optimizer. @@ -1232,3 +1232,104 @@ for.body: end: ret void } + +define void @post-indexed-sub-doubleword-offset-min(i64* %a, i64* %b, i64 %count) nounwind { +; CHECK-LABEL: post-indexed-sub-doubleword-offset-min +; CHECK: ldr x{{[0-9]+}}, [x{{[0-9]+}}], #-256 +; CHECK: str x{{[0-9]+}}, [x{{[0-9]+}}], #-256 + br label %for.body +for.body: + %phi1 = phi i64* [ %gep4, %for.body ], [ %b, %0 ] + %phi2 = phi i64* [ %gep3, %for.body ], [ %a, %0 ] + %i = phi i64 [ %dec.i, %for.body], [ %count, %0 ] + %gep1 = getelementptr i64, i64* %phi1, i64 1 + %load1 = load i64, i64* %gep1 + %gep2 = getelementptr i64, i64* %phi2, i64 1 + store i64 %load1, i64* %gep2 + %load2 = load i64, i64* %phi1 + store i64 %load2, i64* %phi2 + %dec.i = add nsw i64 %i, -1 + %gep3 = getelementptr i64, i64* %phi2, i64 -32 + %gep4 = getelementptr i64, i64* %phi1, i64 -32 + %cond = icmp sgt i64 %dec.i, 0 + br i1 %cond, label %for.body, label %end +end: + ret void +} + +define void @post-indexed-doubleword-offset-out-of-range(i64* %a, i64* %b, i64 %count) nounwind { +; CHECK-LABEL: post-indexed-doubleword-offset-out-of-range +; CHECK: ldr x{{[0-9]+}}, [x{{[0-9]+}}] +; CHECK: add x{{[0-9]+}}, x{{[0-9]+}}, #256 +; CHECK: str x{{[0-9]+}}, [x{{[0-9]+}}] +; CHECK: add x{{[0-9]+}}, x{{[0-9]+}}, #256 + + br label %for.body +for.body: + %phi1 = phi i64* [ %gep4, %for.body ], [ %b, %0 ] + %phi2 = phi i64* [ %gep3, %for.body ], [ %a, %0 ] + %i = phi i64 [ %dec.i, %for.body], [ %count, %0 ] + %gep1 = getelementptr i64, i64* %phi1, i64 1 + %load1 = load i64, i64* %gep1 + %gep2 = getelementptr i64, i64* %phi2, i64 1 + store i64 %load1, i64* %gep2 + %load2 = load i64, i64* %phi1 + store i64 %load2, i64* %phi2 + %dec.i = add nsw i64 %i, -1 + %gep3 = getelementptr i64, i64* %phi2, i64 32 + %gep4 = getelementptr i64, i64* %phi1, i64 32 + %cond = icmp sgt i64 %dec.i, 0 + br i1 %cond, label %for.body, label %end +end: + ret void +} + +define void @post-indexed-paired-min-offset(i64* %a, i64* %b, i64 %count) nounwind { +; CHECK-LABEL: post-indexed-paired-min-offset +; CHECK: ldp x{{[0-9]+}}, x{{[0-9]+}}, [x{{[0-9]+}}], #-512 +; CHECK: stp x{{[0-9]+}}, x{{[0-9]+}}, [x{{[0-9]+}}], #-512 + br label %for.body +for.body: + %phi1 = phi i64* [ %gep4, %for.body ], [ %b, %0 ] + %phi2 = phi i64* [ %gep3, %for.body ], [ %a, %0 ] + %i = phi i64 [ %dec.i, %for.body], [ %count, %0 ] + %gep1 = getelementptr i64, i64* %phi1, i64 1 + %load1 = load i64, i64* %gep1 + %gep2 = getelementptr i64, i64* %phi2, i64 1 + %load2 = load i64, i64* %phi1 + store i64 %load1, i64* %gep2 + store i64 %load2, i64* %phi2 + %dec.i = add nsw i64 %i, -1 + %gep3 = getelementptr i64, i64* %phi2, i64 -64 + %gep4 = getelementptr i64, i64* %phi1, i64 -64 + %cond = icmp sgt i64 %dec.i, 0 + br i1 %cond, label %for.body, label %end +end: + ret void +} + +define void @post-indexed-paired-offset-out-of-range(i64* %a, i64* %b, i64 %count) nounwind { +; CHECK-LABEL: post-indexed-paired-offset-out-of-range +; CHECK: ldp x{{[0-9]+}}, x{{[0-9]+}}, [x{{[0-9]+}}] +; CHECK: add x{{[0-9]+}}, x{{[0-9]+}}, #512 +; CHECK: stp x{{[0-9]+}}, x{{[0-9]+}}, [x{{[0-9]+}}] +; CHECK: add x{{[0-9]+}}, x{{[0-9]+}}, #512 + br label %for.body +for.body: + %phi1 = phi i64* [ %gep4, %for.body ], [ %b, %0 ] + %phi2 = phi i64* [ %gep3, %for.body ], [ %a, %0 ] + %i = phi i64 [ %dec.i, %for.body], [ %count, %0 ] + %gep1 = getelementptr i64, i64* %phi1, i64 1 + %load1 = load i64, i64* %phi1 + %gep2 = getelementptr i64, i64* %phi2, i64 1 + %load2 = load i64, i64* %gep1 + store i64 %load1, i64* %gep2 + store i64 %load2, i64* %phi2 + %dec.i = add nsw i64 %i, -1 + %gep3 = getelementptr i64, i64* %phi2, i64 64 + %gep4 = getelementptr i64, i64* %phi1, i64 64 + %cond = icmp sgt i64 %dec.i, 0 + br i1 %cond, label %for.body, label %end +end: + ret void +} Added: vendor/llvm/dist/test/CodeGen/AArch64/ldst-paired-aliasing.ll ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/llvm/dist/test/CodeGen/AArch64/ldst-paired-aliasing.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -0,0 +1,47 @@ +; RUN: llc -mcpu cortex-a53 < %s | FileCheck %s +target datalayout = "e-m:e-i64:64-i128:128-n8:16:32:64-S128" +target triple = "aarch64--linux-gnu" + +declare void @f(i8*, i8*) +declare void @f2(i8*, i8*) +declare void @_Z5setupv() +declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) #3 + +define i32 @main() local_unnamed_addr #1 { +; Make sure the stores happen in the correct order (the exact instructions could change). +; CHECK-LABEL: main: +; CHECK: str q0, [sp, #48] +; CHECK: ldr w8, [sp, #48] +; CHECK: stur q1, [sp, #72] +; CHECK: str q0, [sp, #64] +; CHECK: str w9, [sp, #80] + +for.body.lr.ph.i.i.i.i.i.i63: + %b1 = alloca [10 x i32], align 16 + %x0 = bitcast [10 x i32]* %b1 to i8* + %b2 = alloca [10 x i32], align 16 + %x1 = bitcast [10 x i32]* %b2 to i8* + tail call void @_Z5setupv() + %x2 = getelementptr inbounds [10 x i32], [10 x i32]* %b1, i64 0, i64 6 + %x3 = bitcast i32* %x2 to i8* + call void @llvm.memset.p0i8.i64(i8* %x3, i8 0, i64 16, i32 8, i1 false) + %arraydecay2 = getelementptr inbounds [10 x i32], [10 x i32]* %b1, i64 0, i64 0 + %x4 = bitcast [10 x i32]* %b1 to <4 x i32>* + store <4 x i32> , <4 x i32>* %x4, align 16 + %incdec.ptr.i7.i.i.i.i.i.i64.3 = getelementptr inbounds [10 x i32], [10 x i32]* %b1, i64 0, i64 4 + %x5 = bitcast i32* %incdec.ptr.i7.i.i.i.i.i.i64.3 to <4 x i32>* + store <4 x i32> , <4 x i32>* %x5, align 16 + %incdec.ptr.i7.i.i.i.i.i.i64.7 = getelementptr inbounds [10 x i32], [10 x i32]* %b1, i64 0, i64 8 + store i32 1, i32* %incdec.ptr.i7.i.i.i.i.i.i64.7, align 16 + %x6 = load i32, i32* %arraydecay2, align 16 + %cmp6 = icmp eq i32 %x6, 1 + br i1 %cmp6, label %for.inc, label %if.then + +for.inc: + call void @f(i8* %x0, i8* %x1) + ret i32 0 + +if.then: + call void @f2(i8* %x0, i8* %x1) + ret i32 0 +} Modified: vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-sibcall.ll ============================================================================== --- vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-sibcall.ll Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/test/CodeGen/PowerPC/ppc64-sibcall.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -189,3 +189,15 @@ define void @w_caller(i8* %ptr) { ; CHECK-SCO-LABEL: w_caller: ; CHECK-SCO: bl w_callee } + +%struct.byvalTest = type { [8 x i8] } +@byval = common global %struct.byvalTest zeroinitializer + +define void @byval_callee(%struct.byvalTest* byval %ptr) { ret void } +define void @byval_caller() { + tail call void @byval_callee(%struct.byvalTest* byval @byval) + ret void + +; CHECK-SCO-LABEL: bl byval_callee +; CHECK-SCO: bl byval_callee +} Modified: vendor/llvm/dist/test/Transforms/Inline/inline_constprop.ll ============================================================================== --- vendor/llvm/dist/test/Transforms/Inline/inline_constprop.ll Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/test/Transforms/Inline/inline_constprop.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -299,8 +299,8 @@ entry: } ; CHECK-LABEL: define i32 @PR28802( -; CHECK: call i32 @PR28802.external(i32 0) -; CHECK: ret i32 0 +; CHECK: %[[call:.*]] = call i32 @PR28802.external(i32 0) +; CHECK: ret i32 %[[call]] define internal i32 @PR28848.callee(i32 %p2, i1 %c) { entry: @@ -322,3 +322,25 @@ entry: } ; CHECK-LABEL: define i32 @PR28848( ; CHECK: ret i32 0 + +define internal void @callee7(i16 %param1, i16 %param2) { +entry: + br label %bb + +bb: + %phi = phi i16 [ %param2, %entry ] + %add = add i16 %phi, %param1 + ret void +} + +declare i16 @caller7.external(i16 returned) + +define void @caller7() { +bb1: + %call = call i16 @caller7.external(i16 1) + call void @callee7(i16 0, i16 %call) + ret void +} +; CHECK-LABEL: define void @caller7( +; CHECK: %call = call i16 @caller7.external(i16 1) +; CHECK-NEXT: ret void Modified: vendor/llvm/dist/test/Transforms/Reassociate/reassoc-intermediate-fnegs.ll ============================================================================== --- vendor/llvm/dist/test/Transforms/Reassociate/reassoc-intermediate-fnegs.ll Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/test/Transforms/Reassociate/reassoc-intermediate-fnegs.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -1,8 +1,8 @@ ; RUN: opt < %s -reassociate -S | FileCheck %s ; CHECK-LABEL: faddsubAssoc1 -; CHECK: [[TMP1:%.*]] = fsub fast half 0xH8000, %a -; CHECK: [[TMP2:%.*]] = fadd fast half %b, [[TMP1]] -; CHECK: fmul fast half [[TMP2]], 0xH4500 +; CHECK: [[TMP1:%tmp.*]] = fmul fast half %a, 0xH4500 +; CHECK: [[TMP2:%tmp.*]] = fmul fast half %b, 0xH4500 +; CHECK: fsub fast half [[TMP2]], [[TMP1]] ; CHECK: ret ; Input is A op (B op C) define half @faddsubAssoc1(half %a, half %b) { Modified: vendor/llvm/dist/test/Transforms/Reassociate/xor_reassoc.ll ============================================================================== --- vendor/llvm/dist/test/Transforms/Reassociate/xor_reassoc.ll Wed Aug 24 17:26:11 2016 (r304758) +++ vendor/llvm/dist/test/Transforms/Reassociate/xor_reassoc.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -88,8 +88,8 @@ define i32 @xor_special2(i32 %x, i32 %y) %xor1 = xor i32 %xor, %and ret i32 %xor1 ; CHECK-LABEL: @xor_special2( -; CHECK: %xor = xor i32 %y, 123 -; CHECK: %xor1 = xor i32 %xor, %x +; CHECK: %xor = xor i32 %x, 123 +; CHECK: %xor1 = xor i32 %xor, %y ; CHECK: ret i32 %xor1 } Added: vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/gather-root.ll ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/llvm/dist/test/Transforms/SLPVectorizer/AArch64/gather-root.ll Wed Aug 24 17:35:37 2016 (r304759) @@ -0,0 +1,87 @@ +; RUN: opt < %s -slp-vectorizer -S | FileCheck %s --check-prefix=DEFAULT +; RUN: opt < %s -slp-schedule-budget=0 -slp-min-tree-size=0 -slp-threshold=-30 -slp-vectorizer -S | FileCheck %s --check-prefix=GATHER + +target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" +target triple = "aarch64--linux-gnu" + +@a = common global [80 x i8] zeroinitializer, align 16 + +; DEFAULT-LABEL: @PR28330( +; DEFAULT: %tmp17 = phi i32 [ %tmp34, %for.body ], [ 0, %entry ] +; DEFAULT: %[[S0:.+]] = select <8 x i1> %1, <8 x i32> , <8 x i32> +; DEFAULT: %[[R0:.+]] = shufflevector <8 x i32> %[[S0]], <8 x i32> undef, <8 x i32> +; DEFAULT: %[[R1:.+]] = add <8 x i32> %[[S0]], %[[R0]] +; DEFAULT: %[[R2:.+]] = shufflevector <8 x i32> %[[R1]], <8 x i32> undef, <8 x i32> +; DEFAULT: %[[R3:.+]] = add <8 x i32> %[[R1]], %[[R2]] +; DEFAULT: %[[R4:.+]] = shufflevector <8 x i32> %[[R3]], <8 x i32> undef, <8 x i32> +; DEFAULT: %[[R5:.+]] = add <8 x i32> %[[R3]], %[[R4]] +; DEFAULT: %[[R6:.+]] = extractelement <8 x i32> %[[R5]], i32 0 +; DEFAULT: %tmp34 = add i32 %[[R6]], %tmp17 +; +; GATHER-LABEL: @PR28330( +; GATHER: %tmp17 = phi i32 [ %tmp34, %for.body ], [ 0, %entry ] +; GATHER: %tmp19 = select i1 %tmp1, i32 -720, i32 -80 +; GATHER: %tmp21 = select i1 %tmp3, i32 -720, i32 -80 +; GATHER: %tmp23 = select i1 %tmp5, i32 -720, i32 -80 +; GATHER: %tmp25 = select i1 %tmp7, i32 -720, i32 -80 +; GATHER: %tmp27 = select i1 %tmp9, i32 -720, i32 -80 +; GATHER: %tmp29 = select i1 %tmp11, i32 -720, i32 -80 +; GATHER: %tmp31 = select i1 %tmp13, i32 -720, i32 -80 +; GATHER: %tmp33 = select i1 %tmp15, i32 -720, i32 -80 +; GATHER: %[[I0:.+]] = insertelement <8 x i32> undef, i32 %tmp19, i32 0 +; GATHER: %[[I1:.+]] = insertelement <8 x i32> %[[I0]], i32 %tmp21, i32 1 +; GATHER: %[[I2:.+]] = insertelement <8 x i32> %[[I1]], i32 %tmp23, i32 2 +; GATHER: %[[I3:.+]] = insertelement <8 x i32> %[[I2]], i32 %tmp25, i32 3 +; GATHER: %[[I4:.+]] = insertelement <8 x i32> %[[I3]], i32 %tmp27, i32 4 +; GATHER: %[[I5:.+]] = insertelement <8 x i32> %[[I4]], i32 %tmp29, i32 5 +; GATHER: %[[I6:.+]] = insertelement <8 x i32> %[[I5]], i32 %tmp31, i32 6 +; GATHER: %[[I7:.+]] = insertelement <8 x i32> %[[I6]], i32 %tmp33, i32 7 +; GATHER: %[[R0:.+]] = shufflevector <8 x i32> %[[I7]], <8 x i32> undef, <8 x i32> +; GATHER: %[[R1:.+]] = add <8 x i32> %[[I7]], %[[R0]] +; GATHER: %[[R2:.+]] = shufflevector <8 x i32> %[[R1]], <8 x i32> undef, <8 x i32> +; GATHER: %[[R3:.+]] = add <8 x i32> %[[R1]], %[[R2]] +; GATHER: %[[R4:.+]] = shufflevector <8 x i32> %[[R3]], <8 x i32> undef, <8 x i32> +; GATHER: %[[R5:.+]] = add <8 x i32> %[[R3]], %[[R4]] +; GATHER: %[[R6:.+]] = extractelement <8 x i32> %[[R5]], i32 0 +; GATHER: %tmp34 = add i32 %[[R6]], %tmp17 + +define void @PR28330(i32 %n) { +entry: + %tmp0 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 1), align 1 + %tmp1 = icmp eq i8 %tmp0, 0 + %tmp2 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 2), align 2 + %tmp3 = icmp eq i8 %tmp2, 0 + %tmp4 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 3), align 1 + %tmp5 = icmp eq i8 %tmp4, 0 + %tmp6 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 4), align 4 + %tmp7 = icmp eq i8 %tmp6, 0 + %tmp8 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 5), align 1 + %tmp9 = icmp eq i8 %tmp8, 0 + %tmp10 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 6), align 2 + %tmp11 = icmp eq i8 %tmp10, 0 + %tmp12 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 7), align 1 + %tmp13 = icmp eq i8 %tmp12, 0 + %tmp14 = load i8, i8* getelementptr inbounds ([80 x i8], [80 x i8]* @a, i64 0, i64 8), align 8 + %tmp15 = icmp eq i8 %tmp14, 0 + br label %for.body + +for.body: + %tmp17 = phi i32 [ %tmp34, %for.body ], [ 0, %entry ] + %tmp19 = select i1 %tmp1, i32 -720, i32 -80 + %tmp20 = add i32 %tmp17, %tmp19 + %tmp21 = select i1 %tmp3, i32 -720, i32 -80 + %tmp22 = add i32 %tmp20, %tmp21 + %tmp23 = select i1 %tmp5, i32 -720, i32 -80 + %tmp24 = add i32 %tmp22, %tmp23 + %tmp25 = select i1 %tmp7, i32 -720, i32 -80 + %tmp26 = add i32 %tmp24, %tmp25 + %tmp27 = select i1 %tmp9, i32 -720, i32 -80 + %tmp28 = add i32 %tmp26, %tmp27 + %tmp29 = select i1 %tmp11, i32 -720, i32 -80 + %tmp30 = add i32 %tmp28, %tmp29 + %tmp31 = select i1 %tmp13, i32 -720, i32 -80 + %tmp32 = add i32 %tmp30, %tmp31 + %tmp33 = select i1 %tmp15, i32 -720, i32 -80 + %tmp34 = add i32 %tmp32, %tmp33 + br label %for.body +} From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:36:05 2016 Return-Path: Delivered-To: svn-src-vendor@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 EFBB1BC5BB5; Wed, 24 Aug 2016 17:36:05 +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 mx1.freebsd.org (Postfix) with ESMTPS id A8047198F; Wed, 24 Aug 2016 17:36:05 +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 u7OHa4xd036125; Wed, 24 Aug 2016 17:36:04 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHa4Mq036124; Wed, 24 Aug 2016 17:36:04 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241736.u7OHa4Mq036124@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:36:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304760 - vendor/llvm/llvm-release_39-r279477 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.22 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: Wed, 24 Aug 2016 17:36:06 -0000 Author: dim Date: Wed Aug 24 17:36:04 2016 New Revision: 304760 URL: https://svnweb.freebsd.org/changeset/base/304760 Log: Tag llvm release_39 branch r279477. Added: vendor/llvm/llvm-release_39-r279477/ - copied from r304759, vendor/llvm/dist/ From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:36:22 2016 Return-Path: Delivered-To: svn-src-vendor@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 65FB0BC5BF7; Wed, 24 Aug 2016 17:36:22 +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 mx1.freebsd.org (Postfix) with ESMTPS id 314861B27; Wed, 24 Aug 2016 17:36:22 +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 u7OHaLF0036185; Wed, 24 Aug 2016 17:36:21 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHaKbd036178; Wed, 24 Aug 2016 17:36:20 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241736.u7OHaKbd036178@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:36:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304761 - in vendor/clang/dist: docs lib/CodeGen lib/Driver lib/Sema test/CodeGen test/Sema 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.22 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: Wed, 24 Aug 2016 17:36:22 -0000 Author: dim Date: Wed Aug 24 17:36:20 2016 New Revision: 304761 URL: https://svnweb.freebsd.org/changeset/base/304761 Log: Vendor import of clang release_39 branch r279477: https://llvm.org/svn/llvm-project/cfe/branches/release_39@279477 Added: vendor/clang/dist/test/CodeGen/wrapv-lshr-sanitize.c (contents, props changed) vendor/clang/dist/test/Sema/negative-shift-wrapv.c (contents, props changed) Modified: vendor/clang/dist/docs/ReleaseNotes.rst vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp vendor/clang/dist/lib/Driver/ToolChains.cpp vendor/clang/dist/lib/Sema/SemaExpr.cpp Modified: vendor/clang/dist/docs/ReleaseNotes.rst ============================================================================== --- vendor/clang/dist/docs/ReleaseNotes.rst Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/docs/ReleaseNotes.rst Wed Aug 24 17:36:20 2016 (r304761) @@ -1,6 +1,6 @@ -===================================== -Clang 3.9 (In-Progress) Release Notes -===================================== +======================= +Clang 3.9 Release Notes +======================= .. contents:: :local: @@ -8,12 +8,6 @@ Clang 3.9 (In-Progress) Release Notes Written by the `LLVM Team `_ -.. warning:: - - These are in-progress notes for the upcoming Clang 3.9 release. You may - prefer the `Clang 3.8 Release Notes - `_. - Introduction ============ @@ -31,11 +25,6 @@ the latest release, please check out the Site `_ or the `LLVM Web Site `_. -Note that if you are reading this file from a Subversion checkout or the -main Clang web page, this document applies to the *next* release, not -the current one. To see the release notes for a specific release, please -see the `releases page `_. - What's New in Clang 3.9? ======================== @@ -47,12 +36,12 @@ sections with improvements to Clang's su Major New Features ------------------ -- Clang will no longer pass --build-id by default to the linker. In modern +- Clang will no longer pass ``--build-id`` by default to the linker. In modern linkers that is a relatively expensive option. It can be passed explicitly - with -Wl,--build-id. To have clang always pass it, build clang with - -DENABLE_LINKER_BUILD_ID. + with ``-Wl,--build-id``. To have clang always pass it, build clang with + ``-DENABLE_LINKER_BUILD_ID``. - On Itanium ABI targets, attribute abi_tag is now supported for compatibility - with GCC. Clang implementation of abi_tag is mostly compatible with GCC ABI + with GCC. Clang's implementation of abi_tag is mostly compatible with GCC ABI version 10. Improvements to Clang's diagnostics @@ -62,25 +51,16 @@ Clang's diagnostics are constantly being explain them more clearly, and provide more accurate source information about them. The improvements since the 3.8 release include: -- -Wcomma is a new warning to show most uses of the builtin comma operator. -- -Wfloat-conversion has two new sub-warnings to give finer grain control for - floating point to integer conversion warnings. - - -Wfloat-overflow-convserion detects when a constant floating point value - is converted to an integer type and will overflow the target type. - - -Wfloat-zero-conversion detects when a non-zero floating point value is - converted to a zero integer value. - -New Compiler Flags ------------------- - -The option .... - +- ``-Wcomma`` is a new warning to show most uses of the builtin comma operator. -New Pragmas in Clang ------------------------ +- ``-Wfloat-conversion`` has two new sub-warnings to give finer grain control for + floating point to integer conversion warnings. -Clang now supports the ... + - ``-Wfloat-overflow-conversion`` detects when a constant floating point value + is converted to an integer type and will overflow the target type. + - ``-Wfloat-zero-conversion`` detects when a non-zero floating point value is + converted to a zero integer value. Attribute Changes in Clang -------------------------- @@ -94,9 +74,7 @@ Attribute Changes in Clang Windows Support --------------- -Clang's support for building native Windows programs ... - -TLS is enabled for Cygwin defaults to -femulated-tls. +TLS is enabled for Cygwin and defaults to -femulated-tls. Proper support, including correct mangling and overloading, added for MS-specific "__unaligned" type qualifier. @@ -104,12 +82,12 @@ MS-specific "__unaligned" type qualifier clang-cl now has limited support for the precompiled header flags /Yc, /Yu, and /Fp. If the precompiled header is passed on the compile command with /FI, then the precompiled header flags are honored. But if the precompiled header is -included by an `#include ` in each source file instead of by a -`/FIstdafx.h` flag, these flag continue to be ignored. +included by an ``#include `` in each source file instead of by a +``/FIstdafx.h`` flag, these flag continue to be ignored. -clang-cl has a new flag, `/imsvc `, for adding a directory to the system -include search path (where warnings are disabled default) without having to -set `%INCLUDE`. +clang-cl has a new flag, ``/imsvc ``, for adding a directory to the system +include search path (where warnings are disabled by default) without having to +set ``%INCLUDE%``. C Language Changes in Clang --------------------------- @@ -117,15 +95,9 @@ The -faltivec and -maltivec flags no lon `RenderScript `_ -support added to the Frontend and enabled by the '-x renderscript' option or -the '.rs' file extension. - -... - -C11 Feature Support -^^^^^^^^^^^^^^^^^^^ +support has been added to the frontend and enabled by the '-x renderscript' +option or the '.rs' file extension. -... C++ Language Changes in Clang ----------------------------- @@ -150,7 +122,6 @@ C++ Language Changes in Clang using Foo::e; // error static constexpr auto e = Foo::e; // ok -... C++1z Feature Support ^^^^^^^^^^^^^^^^^^^^^ @@ -185,13 +156,6 @@ Changes to C++1z features since Clang 3. - Unary *fold-expression*\s over an empty pack are now rejected for all operators other than ``&&``, ``||``, and ``,``. -... - -Objective-C Language Changes in Clang -------------------------------------- - -... - OpenCL C Language Changes in Clang ---------------------------------- @@ -199,6 +163,8 @@ Clang now has support for all OpenCL 2.0 features have been completed since the previous release: - Pipe builtin functions (s6.13.16.2-4). +- Dynamic parallelism support via the ``enqueue_kernel`` Clang builtin function, + as well as the kernel query functions from s6.13.17.6. - Address space conversion functions ``to_{global/local/private}``. - ``nosvm`` attribute support. - Improved diagnostic and generation of Clang Blocks used in OpenCL kernel code. @@ -207,7 +173,7 @@ features have been completed since the p Several miscellaneous improvements have been made: - Supported extensions are now part of the target representation to give correct - diagnostics for unsupported target features during compilation. For example, + diagnostics for unsupported target features during compilation. For example, when compiling for a target that does not support the double precision floating point extension, Clang will give an error when encountering the ``cl_khr_fp64`` pragma. Several missing extensions were added covering up to @@ -257,19 +223,10 @@ default. User may change this value usin The codegen for OpenMP constructs was significantly improved to produce much more stable and faster code. -Internal API Changes --------------------- - -These are major API changes that have happened since the 3.8 release of -Clang. If upgrading an external codebase that uses Clang as a library, -this section should help get you past the largest hurdles of upgrading. - -- ... - AST Matchers ------------ -- has and hasAnyArgument: Matchers no longer ignores parentheses and implicit +- has and hasAnyArgument: Matchers no longer ignore parentheses and implicit casts on the argument before applying the inner matcher. The fix was done to allow for greater control by the user. In all existing checkers that use this matcher all instances of code ``hasAnyArgument()`` or @@ -277,13 +234,6 @@ AST Matchers ``hasAnyArgument(ignoringParenImpCasts())`` or ``has(ignoringParenImpCasts())``. -... - -libclang --------- - -... - Static Analyzer --------------- @@ -304,25 +254,6 @@ The scan-build tool now supports a ``--f forces projects to analyze in debug mode. This flag leaves in assertions and so typically results in fewer false positives. -Core Analysis Improvements -========================== - -- ... - -New Issues Found -================ - -- ... - -Python Binding Changes ----------------------- - -The following methods have been added: - -- ... - -Significant Known Problems -========================== Additional Information ====================== Modified: vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp ============================================================================== --- vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/lib/CodeGen/CGExprScalar.cpp Wed Aug 24 17:36:20 2016 (r304761) @@ -2706,7 +2706,8 @@ Value *ScalarExprEmitter::EmitShl(const RHS = Builder.CreateIntCast(RHS, Ops.LHS->getType(), false, "sh_prom"); bool SanitizeBase = CGF.SanOpts.has(SanitizerKind::ShiftBase) && - Ops.Ty->hasSignedIntegerRepresentation(); + Ops.Ty->hasSignedIntegerRepresentation() && + !CGF.getLangOpts().isSignedOverflowDefined(); bool SanitizeExponent = CGF.SanOpts.has(SanitizerKind::ShiftExponent); // OpenCL 6.3j: shift values are effectively % word size of LHS. if (CGF.getLangOpts().OpenCL) Modified: vendor/clang/dist/lib/Driver/ToolChains.cpp ============================================================================== --- vendor/clang/dist/lib/Driver/ToolChains.cpp Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/lib/Driver/ToolChains.cpp Wed Aug 24 17:36:20 2016 (r304761) @@ -474,21 +474,26 @@ void DarwinClang::AddLinkRuntimeLibArgs( else if (isMacosxVersionLT(10, 6)) CmdArgs.push_back("-lgcc_s.10.5"); - // For OS X, we thought we would only need a static runtime library when - // targeting 10.4, to provide versions of the static functions which were - // omitted from 10.4.dylib. + // Originally for OS X, we thought we would only need a static runtime + // library when targeting 10.4, to provide versions of the static functions + // which were omitted from 10.4.dylib. This led to the creation of the 10.4 + // builtins library. // // Unfortunately, that turned out to not be true, because Darwin system // headers can still use eprintf on i386, and it is not exported from // libSystem. Therefore, we still must provide a runtime library just for // the tiny tiny handful of projects that *might* use that symbol. - if (isMacosxVersionLT(10, 5)) { + // + // Then over time, we figured out it was useful to add more things to the + // runtime so we created libclang_rt.osx.a to provide new functions when + // deploying to old OS builds, and for a long time we had both eprintf and + // osx builtin libraries. Which just seems excessive. So with PR 28855, we + // are removing the eprintf library and expecting eprintf to be provided by + // the OS X builtins library. + if (isMacosxVersionLT(10, 5)) AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.10.4.a"); - } else { - if (getTriple().getArch() == llvm::Triple::x86) - AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.eprintf.a"); + else AddLinkRuntimeLib(Args, CmdArgs, "libclang_rt.osx.a"); - } } } Modified: vendor/clang/dist/lib/Sema/SemaExpr.cpp ============================================================================== --- vendor/clang/dist/lib/Sema/SemaExpr.cpp Wed Aug 24 17:36:04 2016 (r304760) +++ vendor/clang/dist/lib/Sema/SemaExpr.cpp Wed Aug 24 17:36:20 2016 (r304761) @@ -8567,7 +8567,7 @@ static void DiagnoseBadShiftValues(Sema& // If LHS does not have a signed type and non-negative value // then, the behavior is undefined. Warn about it. - if (Left.isNegative()) { + if (Left.isNegative() && !S.getLangOpts().isSignedOverflowDefined()) { S.DiagRuntimeBehavior(Loc, LHS.get(), S.PDiag(diag::warn_shift_lhs_negative) << LHS.get()->getSourceRange()); Added: vendor/clang/dist/test/CodeGen/wrapv-lshr-sanitize.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/test/CodeGen/wrapv-lshr-sanitize.c Wed Aug 24 17:36:20 2016 (r304761) @@ -0,0 +1,12 @@ +// RUN: %clang_cc1 -fsanitize=shift-base -emit-llvm %s -o - -triple x86_64-linux-gnu -fwrapv | FileCheck %s + +// CHECK-LABEL: @lsh_overflow +int lsh_overflow(int a, int b) { + // CHECK-NOT: br + // CHECK-NOT: call void @__ubsan_ + // CHECK-NOT: call void @llvm.trap + + // CHECK: %[[RET:.*]] = shl i32 + // CHECK-NEXT: ret i32 %[[RET]] + return a << b; +} Added: vendor/clang/dist/test/Sema/negative-shift-wrapv.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/clang/dist/test/Sema/negative-shift-wrapv.c Wed Aug 24 17:36:20 2016 (r304761) @@ -0,0 +1,9 @@ +// RUN: %clang_cc1 -Wall -ffreestanding -fsyntax-only -fwrapv -verify %s + +int test() { + int i; + i = -1 << 1; // no-warning + return i; +} + +// expected-no-diagnostics From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:36:40 2016 Return-Path: Delivered-To: svn-src-vendor@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 DC45EBC5C47; Wed, 24 Aug 2016 17:36:40 +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 mx1.freebsd.org (Postfix) with ESMTPS id 953131CA1; Wed, 24 Aug 2016 17:36:40 +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 u7OHad0p036237; Wed, 24 Aug 2016 17:36:39 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHadki036236; Wed, 24 Aug 2016 17:36:39 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241736.u7OHadki036236@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:36:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304762 - vendor/clang/clang-release_39-r279477 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.22 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: Wed, 24 Aug 2016 17:36:41 -0000 Author: dim Date: Wed Aug 24 17:36:39 2016 New Revision: 304762 URL: https://svnweb.freebsd.org/changeset/base/304762 Log: Tag clang release_39 branch r279477. Added: vendor/clang/clang-release_39-r279477/ - copied from r304761, vendor/clang/dist/ From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:37:07 2016 Return-Path: Delivered-To: svn-src-vendor@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 4DAA1BC5CD5; Wed, 24 Aug 2016 17:37:07 +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 mx1.freebsd.org (Postfix) with ESMTPS id 170AC1F2F; Wed, 24 Aug 2016 17:37:07 +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 u7OHb6Er036298; Wed, 24 Aug 2016 17:37:06 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHb6k2036297; Wed, 24 Aug 2016 17:37:06 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241737.u7OHb6k2036297@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:37:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304763 - vendor/compiler-rt/dist/lib/msan/tests 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.22 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: Wed, 24 Aug 2016 17:37:07 -0000 Author: dim Date: Wed Aug 24 17:37:06 2016 New Revision: 304763 URL: https://svnweb.freebsd.org/changeset/base/304763 Log: Vendor import of compiler-rt release_39 branch r279477: https://llvm.org/svn/llvm-project/compiler-rt/branches/release_39@279477 Modified: vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc Modified: vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc ============================================================================== --- vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc Wed Aug 24 17:36:39 2016 (r304762) +++ vendor/compiler-rt/dist/lib/msan/tests/msan_test.cc Wed Aug 24 17:37:06 2016 (r304763) @@ -2825,6 +2825,12 @@ TEST(MemorySanitizer, LongStruct) { EXPECT_POISONED(s2.a8); } +#ifdef __GLIBC__ +#define MSAN_TEST_PRLIMIT __GLIBC_PREREQ(2, 13) +#else +#define MSAN_TEST_PRLIMIT 1 +#endif + TEST(MemorySanitizer, getrlimit) { struct rlimit limit; __msan_poison(&limit, sizeof(limit)); @@ -2833,6 +2839,7 @@ TEST(MemorySanitizer, getrlimit) { EXPECT_NOT_POISONED(limit.rlim_cur); EXPECT_NOT_POISONED(limit.rlim_max); +#if MSAN_TEST_PRLIMIT struct rlimit limit2; __msan_poison(&limit2, sizeof(limit2)); result = prlimit(getpid(), RLIMIT_DATA, &limit, &limit2); @@ -2848,6 +2855,7 @@ TEST(MemorySanitizer, getrlimit) { result = prlimit(getpid(), RLIMIT_DATA, &limit, nullptr); ASSERT_EQ(result, 0); +#endif } TEST(MemorySanitizer, getrusage) { From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:37:30 2016 Return-Path: Delivered-To: svn-src-vendor@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 3BB05BC5D4D; Wed, 24 Aug 2016 17:37:30 +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 mx1.freebsd.org (Postfix) with ESMTPS id E78381236; Wed, 24 Aug 2016 17:37:29 +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 u7OHbTf5036354; Wed, 24 Aug 2016 17:37:29 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHbTF8036353; Wed, 24 Aug 2016 17:37:29 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241737.u7OHbTF8036353@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:37:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304764 - vendor/compiler-rt/compiler-rt-release_39-r279477 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.22 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: Wed, 24 Aug 2016 17:37:30 -0000 Author: dim Date: Wed Aug 24 17:37:28 2016 New Revision: 304764 URL: https://svnweb.freebsd.org/changeset/base/304764 Log: Tag compiler-rt release_39 branch r279477. Added: vendor/compiler-rt/compiler-rt-release_39-r279477/ - copied from r304763, vendor/compiler-rt/dist/ From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:37:57 2016 Return-Path: Delivered-To: svn-src-vendor@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 2181BBC5DAA; Wed, 24 Aug 2016 17:37:57 +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 mx1.freebsd.org (Postfix) with ESMTPS id B7C6C13CF; Wed, 24 Aug 2016 17:37:56 +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 u7OHbuYU036439; Wed, 24 Aug 2016 17:37:56 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHbr5Z036411; Wed, 24 Aug 2016 17:37:53 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241737.u7OHbr5Z036411@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:37:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304765 - in vendor/libc++/dist: include test/std/containers/associative/map/map.cons test/std/containers/associative/multimap/multimap.cons test/std/containers/associative/multiset/mul... 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.22 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: Wed, 24 Aug 2016 17:37:57 -0000 Author: dim Date: Wed Aug 24 17:37:53 2016 New Revision: 304765 URL: https://svnweb.freebsd.org/changeset/base/304765 Log: Vendor import of libc++ release_39 branch r279477: https://llvm.org/svn/llvm-project/libcxx/branches/release_39@279477 Modified: vendor/libc++/dist/include/__tree vendor/libc++/dist/include/map vendor/libc++/dist/include/unordered_map vendor/libc++/dist/test/std/containers/associative/map/map.cons/alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/compare_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_assign.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/default.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/initializer_list_compare_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/compare_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/copy_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/default.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/initializer_list_compare_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp vendor/libc++/dist/test/std/containers/associative/multiset/multiset.cons/default.pass.cpp vendor/libc++/dist/test/std/containers/associative/set/set.cons/default.pass.cpp vendor/libc++/dist/test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp vendor/libc++/dist/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp vendor/libc++/dist/test/std/containers/sequences/list/list.cons/default.pass.cpp vendor/libc++/dist/test/std/containers/sequences/vector.bool/construct_default.pass.cpp vendor/libc++/dist/test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/copy_alloc.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/default.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/init_size_hash_equal_allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/move_alloc.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/range_size_hash_equal_allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/size_hash_equal_allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/copy_alloc.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/default.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/init_size_hash_equal_allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/move_alloc.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/range_size_hash_equal_allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multimap/unord.multimap.cnstr/size_hash_equal_allocator.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.multiset/unord.multiset.cnstr/default.pass.cpp vendor/libc++/dist/test/std/containers/unord/unord.set/unord.set.cnstr/default.pass.cpp vendor/libc++/dist/test/std/strings/basic.string/string.cons/alloc.pass.cpp vendor/libc++/dist/test/support/min_allocator.h Modified: vendor/libc++/dist/include/__tree ============================================================================== --- vendor/libc++/dist/include/__tree Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/include/__tree Wed Aug 24 17:37:53 2016 (r304765) @@ -1419,7 +1419,11 @@ private: _LIBCPP_INLINE_VISIBILITY void __copy_assign_alloc(const __tree& __t, true_type) - {__node_alloc() = __t.__node_alloc();} + { + if (__node_alloc() != __t.__node_alloc()) + clear(); + __node_alloc() = __t.__node_alloc(); + } _LIBCPP_INLINE_VISIBILITY void __copy_assign_alloc(const __tree& __t, false_type) {} Modified: vendor/libc++/dist/include/map ============================================================================== --- vendor/libc++/dist/include/map Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/include/map Wed Aug 24 17:37:53 2016 (r304765) @@ -873,7 +873,7 @@ public: _LIBCPP_INLINE_VISIBILITY explicit map(const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) {} + : __tree_(__vc(__comp), typename __base::allocator_type(__a)) {} template _LIBCPP_INLINE_VISIBILITY @@ -888,7 +888,7 @@ public: _LIBCPP_INLINE_VISIBILITY map(_InputIterator __f, _InputIterator __l, const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) + : __tree_(__vc(__comp), typename __base::allocator_type(__a)) { insert(__f, __l); } @@ -955,7 +955,7 @@ public: _LIBCPP_INLINE_VISIBILITY map(initializer_list __il, const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) + : __tree_(__vc(__comp), typename __base::allocator_type(__a)) { insert(__il.begin(), __il.end()); } @@ -977,13 +977,13 @@ public: _LIBCPP_INLINE_VISIBILITY explicit map(const allocator_type& __a) - : __tree_(__a) + : __tree_(typename __base::allocator_type(__a)) { } _LIBCPP_INLINE_VISIBILITY map(const map& __m, const allocator_type& __a) - : __tree_(__m.__tree_.value_comp(), __a) + : __tree_(__m.__tree_.value_comp(), typename __base::allocator_type(__a)) { insert(__m.begin(), __m.end()); } @@ -1034,7 +1034,7 @@ public: const mapped_type& at(const key_type& __k) const; _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const _NOEXCEPT {return __tree_.__alloc();} + allocator_type get_allocator() const _NOEXCEPT {return allocator_type(__tree_.__alloc());} _LIBCPP_INLINE_VISIBILITY key_compare key_comp() const {return __tree_.value_comp().key_comp();} _LIBCPP_INLINE_VISIBILITY @@ -1367,7 +1367,7 @@ map<_Key, _Tp, _Compare, _Allocator>::__ template map<_Key, _Tp, _Compare, _Allocator>::map(map&& __m, const allocator_type& __a) - : __tree_(_VSTD::move(__m.__tree_), __a) + : __tree_(_VSTD::move(__m.__tree_), typename __base::allocator_type(__a)) { if (__a != __m.get_allocator()) { @@ -1599,7 +1599,7 @@ public: _LIBCPP_INLINE_VISIBILITY explicit multimap(const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) {} + : __tree_(__vc(__comp), typename __base::allocator_type(__a)) {} template _LIBCPP_INLINE_VISIBILITY @@ -1614,7 +1614,7 @@ public: _LIBCPP_INLINE_VISIBILITY multimap(_InputIterator __f, _InputIterator __l, const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) + : __tree_(__vc(__comp), typename __base::allocator_type(__a)) { insert(__f, __l); } @@ -1682,7 +1682,7 @@ public: _LIBCPP_INLINE_VISIBILITY multimap(initializer_list __il, const key_compare& __comp, const allocator_type& __a) - : __tree_(__vc(__comp), __a) + : __tree_(__vc(__comp), typename __base::allocator_type(__a)) { insert(__il.begin(), __il.end()); } @@ -1704,13 +1704,13 @@ public: _LIBCPP_INLINE_VISIBILITY explicit multimap(const allocator_type& __a) - : __tree_(__a) + : __tree_(typename __base::allocator_type(__a)) { } _LIBCPP_INLINE_VISIBILITY multimap(const multimap& __m, const allocator_type& __a) - : __tree_(__m.__tree_.value_comp(), __a) + : __tree_(__m.__tree_.value_comp(), typename __base::allocator_type(__a)) { insert(__m.begin(), __m.end()); } @@ -1752,7 +1752,7 @@ public: size_type max_size() const _NOEXCEPT {return __tree_.max_size();} _LIBCPP_INLINE_VISIBILITY - allocator_type get_allocator() const _NOEXCEPT {return __tree_.__alloc();} + allocator_type get_allocator() const _NOEXCEPT {return allocator_type(__tree_.__alloc());} _LIBCPP_INLINE_VISIBILITY key_compare key_comp() const {return __tree_.value_comp().key_comp();} _LIBCPP_INLINE_VISIBILITY @@ -1923,7 +1923,7 @@ private: #ifndef _LIBCPP_CXX03_LANG template multimap<_Key, _Tp, _Compare, _Allocator>::multimap(multimap&& __m, const allocator_type& __a) - : __tree_(_VSTD::move(__m.__tree_), __a) + : __tree_(_VSTD::move(__m.__tree_), typename __base::allocator_type(__a)) { if (__a != __m.get_allocator()) { Modified: vendor/libc++/dist/include/unordered_map ============================================================================== --- vendor/libc++/dist/include/unordered_map Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/include/unordered_map Wed Aug 24 17:37:53 2016 (r304765) @@ -1185,7 +1185,7 @@ template ::unordered_map( size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) + : __table_(__hf, __eql, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1197,7 +1197,7 @@ template ::unordered_map( const allocator_type& __a) - : __table_(__a) + : __table_(typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1234,7 +1234,7 @@ template unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map( _InputIterator __first, _InputIterator __last, size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) + : __table_(__hf, __eql, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1258,7 +1258,7 @@ unordered_map<_Key, _Tp, _Hash, _Pred, _ template unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map( const unordered_map& __u, const allocator_type& __a) - : __table_(__u.__table_, __a) + : __table_(__u.__table_, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1285,7 +1285,7 @@ unordered_map<_Key, _Tp, _Hash, _Pred, _ template unordered_map<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_map( unordered_map&& __u, const allocator_type& __a) - : __table_(_VSTD::move(__u.__table_), __a) + : __table_(_VSTD::move(__u.__table_), typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1335,7 +1335,7 @@ template ::unordered_map( initializer_list __il, size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) + : __table_(__hf, __eql, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1820,7 +1820,7 @@ template ::unordered_multimap( size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) + : __table_(__hf, __eql, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1858,7 +1858,7 @@ template unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap( _InputIterator __first, _InputIterator __last, size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) + : __table_(__hf, __eql, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1871,7 +1871,7 @@ template ::unordered_multimap( const allocator_type& __a) - : __table_(__a) + : __table_(typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1893,7 +1893,7 @@ unordered_multimap<_Key, _Tp, _Hash, _Pr template unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap( const unordered_multimap& __u, const allocator_type& __a) - : __table_(__u.__table_, __a) + : __table_(__u.__table_, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1920,7 +1920,7 @@ unordered_multimap<_Key, _Tp, _Hash, _Pr template unordered_multimap<_Key, _Tp, _Hash, _Pred, _Alloc>::unordered_multimap( unordered_multimap&& __u, const allocator_type& __a) - : __table_(_VSTD::move(__u.__table_), __a) + : __table_(_VSTD::move(__u.__table_), typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); @@ -1972,7 +1972,7 @@ template ::unordered_multimap( initializer_list __il, size_type __n, const hasher& __hf, const key_equal& __eql, const allocator_type& __a) - : __table_(__hf, __eql, __a) + : __table_(__hf, __eql, typename __table::allocator_type(__a)) { #if _LIBCPP_DEBUG_LEVEL >= 2 __get_db()->__insert_c(this); Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -38,5 +38,13 @@ int main() assert(m.begin() == m.end()); assert(m.get_allocator() == A()); } + { + typedef std::less C; + typedef explicit_allocator > A; + std::map m(A{}); + assert(m.empty()); + assert(m.begin() == m.end()); + assert(m.get_allocator() == A()); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/compare_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/compare_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/compare_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -41,5 +41,14 @@ int main() assert(m.key_comp() == C(4)); assert(m.get_allocator() == A()); } + { + typedef test_compare > C; + typedef explicit_allocator > A; + std::map m(C(4), A{}); + assert(m.empty()); + assert(m.begin() == m.end()); + assert(m.key_comp() == C(4)); + assert(m.get_allocator() == A{}); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -91,5 +91,39 @@ int main() assert(*next(mo.begin()) == V(2, 1)); assert(*next(mo.begin(), 2) == V(3, 1)); } + { + typedef std::pair V; + V ar[] = + { + V(1, 1), + V(1, 1.5), + V(1, 2), + V(2, 1), + V(2, 1.5), + V(2, 2), + V(3, 1), + V(3, 1.5), + V(3, 2), + }; + typedef test_compare > C; + typedef explicit_allocator A; + std::map mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A{}); + std::map m(mo, A{}); + assert(m.get_allocator() == A()); + assert(m.key_comp() == C(5)); + assert(m.size() == 3); + assert(distance(m.begin(), m.end()) == 3); + assert(*m.begin() == V(1, 1)); + assert(*next(m.begin()) == V(2, 1)); + assert(*next(m.begin(), 2) == V(3, 1)); + + assert(mo.get_allocator() == A()); + assert(mo.key_comp() == C(5)); + assert(mo.size() == 3); + assert(distance(mo.begin(), mo.end()) == 3); + assert(*mo.begin() == V(1, 1)); + assert(*next(mo.begin()) == V(2, 1)); + assert(*next(mo.begin(), 2) == V(3, 1)); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_assign.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_assign.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/copy_assign.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -15,11 +15,99 @@ #include #include +#include +#include + +#include #include "../../../test_compare.h" #include "test_allocator.h" #include "min_allocator.h" +#if TEST_STD_VER >= 11 +std::vector ca_allocs; +std::vector ca_deallocs; + +template +class counting_allocatorT { +public: + typedef T value_type; + int foo{0}; + counting_allocatorT(int f) noexcept : foo(f) {} + + using propagate_on_container_copy_assignment = std::true_type; + template counting_allocatorT(const counting_allocatorT& other) noexcept {foo = other.foo;} + template bool operator==(const counting_allocatorT& other) const noexcept { return foo == other.foo; } + template bool operator!=(const counting_allocatorT& other) const noexcept { return foo != other.foo; } + + T * allocate(const size_t n) const { + ca_allocs.push_back(foo); + void * const pv = ::malloc(n * sizeof(T)); + return static_cast(pv); + } + void deallocate(T * const p, size_t) const noexcept { + ca_deallocs.push_back(foo); + free(p); + } +}; + +template +class counting_allocatorF { +public: + typedef T value_type; + int foo{0}; + counting_allocatorF(int f) noexcept : foo(f) {} + + using propagate_on_container_copy_assignment = std::false_type; + template counting_allocatorF(const counting_allocatorF& other) noexcept {foo = other.foo;} + template bool operator==(const counting_allocatorF& other) const noexcept { return foo == other.foo; } + template bool operator!=(const counting_allocatorF& other) const noexcept { return foo != other.foo; } + + T * allocate(const size_t n) const { + ca_allocs.push_back(foo); + void * const pv = ::malloc(n * sizeof(T)); + return static_cast(pv); + } + void deallocate(T * const p, size_t) const noexcept { + ca_deallocs.push_back(foo); + free(p); + } +}; + +bool balanced_allocs() { + std::vector temp1, temp2; + + std::cout << "Allocations = " << ca_allocs.size() << ", deallocatons = " << ca_deallocs.size() << std::endl; + if (ca_allocs.size() != ca_deallocs.size()) + return false; + + temp1 = ca_allocs; + std::sort(temp1.begin(), temp1.end()); + temp2.clear(); + std::unique_copy(temp1.begin(), temp1.end(), std::back_inserter>(temp2)); + std::cout << "There were " << temp2.size() << " different allocators\n"; + + for (std::vector::const_iterator it = temp2.begin(); it != temp2.end(); ++it ) { + std::cout << *it << ": " << std::count(ca_allocs.begin(), ca_allocs.end(), *it) << " vs " << std::count(ca_deallocs.begin(), ca_deallocs.end(), *it) << std::endl; + if ( std::count(ca_allocs.begin(), ca_allocs.end(), *it) != std::count(ca_deallocs.begin(), ca_deallocs.end(), *it)) + return false; + } + + temp1 = ca_allocs; + std::sort(temp1.begin(), temp1.end()); + temp2.clear(); + std::unique_copy(temp1.begin(), temp1.end(), std::back_inserter>(temp2)); + std::cout << "There were " << temp2.size() << " different (de)allocators\n"; + for (std::vector::const_iterator it = ca_deallocs.begin(); it != ca_deallocs.end(); ++it ) { + std::cout << *it << ": " << std::count(ca_allocs.begin(), ca_allocs.end(), *it) << " vs " << std::count(ca_deallocs.begin(), ca_deallocs.end(), *it) << std::endl; + if ( std::count(ca_allocs.begin(), ca_allocs.end(), *it) != std::count(ca_deallocs.begin(), ca_deallocs.end(), *it)) + return false; + } + + return true; + } +#endif + int main() { { @@ -178,5 +266,75 @@ int main() assert(*next(mo.begin()) == V(2, 1)); assert(*next(mo.begin(), 2) == V(3, 1)); } + + assert(balanced_allocs()); + { + typedef std::pair V; + V ar[] = + { + V(1, 1), + V(1, 1.5), + V(1, 2), + V(2, 1), + V(2, 1.5), + V(2, 2), + V(3, 1), + V(3, 1.5), + V(3, 2) + }; + typedef test_compare > C; + typedef counting_allocatorT A; + std::map mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(1)); + std::map m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A(2)); + m = mo; + assert(m.key_comp() == C(5)); + assert(m.size() == 3); + assert(distance(m.begin(), m.end()) == 3); + assert(*m.begin() == V(1, 1)); + assert(*next(m.begin()) == V(2, 1)); + assert(*next(m.begin(), 2) == V(3, 1)); + + assert(mo.key_comp() == C(5)); + assert(mo.size() == 3); + assert(distance(mo.begin(), mo.end()) == 3); + assert(*mo.begin() == V(1, 1)); + assert(*next(mo.begin()) == V(2, 1)); + assert(*next(mo.begin(), 2) == V(3, 1)); + } + assert(balanced_allocs()); + { + typedef std::pair V; + V ar[] = + { + V(1, 1), + V(1, 1.5), + V(1, 2), + V(2, 1), + V(2, 1.5), + V(2, 2), + V(3, 1), + V(3, 1.5), + V(3, 2) + }; + typedef test_compare > C; + typedef counting_allocatorF A; + std::map mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A(100)); + std::map m(ar, ar+sizeof(ar)/sizeof(ar[0])/2, C(3), A(200)); + m = mo; + assert(m.key_comp() == C(5)); + assert(m.size() == 3); + assert(distance(m.begin(), m.end()) == 3); + assert(*m.begin() == V(1, 1)); + assert(*next(m.begin()) == V(2, 1)); + assert(*next(m.begin(), 2) == V(3, 1)); + + assert(mo.key_comp() == C(5)); + assert(mo.size() == 3); + assert(distance(mo.begin(), mo.end()) == 3); + assert(*mo.begin() == V(1, 1)); + assert(*next(mo.begin()) == V(2, 1)); + assert(*next(mo.begin(), 2) == V(3, 1)); + } + assert(balanced_allocs()); #endif } Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -32,6 +32,20 @@ int main() assert(m.begin() == m.end()); } { + typedef explicit_allocator> A; + { + std::map, A> m; + assert(m.empty()); + assert(m.begin() == m.end()); + } + { + A a; + std::map, A> m(a); + assert(m.empty()); + assert(m.begin() == m.end()); + } + } + { std::map m = {}; assert(m.empty()); assert(m.begin() == m.end()); Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/initializer_list_compare_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/initializer_list_compare_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/initializer_list_compare_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -69,7 +69,7 @@ int main() assert(m.key_comp() == C(3)); assert(m.get_allocator() == A()); } -#if _LIBCPP_STD_VER > 11 +#if TEST_STD_VER > 11 { typedef std::pair V; typedef min_allocator A; @@ -95,6 +95,30 @@ int main() assert(m.get_allocator() == a); } #endif + { + typedef std::pair V; + typedef explicit_allocator A; + typedef test_compare > C; + A a; + std::map m({ + {1, 1}, + {1, 1.5}, + {1, 2}, + {2, 1}, + {2, 1.5}, + {2, 2}, + {3, 1}, + {3, 1.5}, + {3, 2} + }, C(3), a); + assert(m.size() == 3); + assert(distance(m.begin(), m.end()) == 3); + assert(*m.begin() == V(1, 1)); + assert(*next(m.begin()) == V(2, 1)); + assert(*next(m.begin(), 2) == V(3, 1)); + assert(m.key_comp() == C(3)); + assert(m.get_allocator() == a); + } #endif #endif // _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS } Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/iter_iter_comp_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -90,6 +90,7 @@ int main() V(3, 1.5), V(3, 2), }; + { typedef std::pair V; typedef min_allocator A; typedef test_compare > C; @@ -103,6 +104,21 @@ int main() assert(*next(m.begin(), 2) == V(3, 1)); assert(m.get_allocator() == a); } + { + typedef std::pair V; + typedef explicit_allocator A; + typedef test_compare > C; + A a; + std::map m(ar, ar+sizeof(ar)/sizeof(ar[0]), a ); + + assert(m.size() == 3); + assert(distance(m.begin(), m.end()) == 3); + assert(*m.begin() == V(1, 1)); + assert(*next(m.begin()) == V(2, 1)); + assert(*next(m.begin(), 2) == V(3, 1)); + assert(m.get_allocator() == a); + } + } #endif #endif } Modified: vendor/libc++/dist/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/map/map.cons/move_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -229,6 +229,45 @@ int main() assert(m3.key_comp() == C(5)); assert(m1.empty()); } + { + typedef std::pair V; + typedef std::pair VC; + typedef test_compare > C; + typedef explicit_allocator A; + typedef std::map M; + typedef std::move_iterator I; + V a1[] = + { + V(1, 1), + V(1, 2), + V(1, 3), + V(2, 1), + V(2, 2), + V(2, 3), + V(3, 1), + V(3, 2), + V(3, 3) + }; + M m1(I(a1), I(a1+sizeof(a1)/sizeof(a1[0])), C(5), A{}); + V a2[] = + { + V(1, 1), + V(1, 2), + V(1, 3), + V(2, 1), + V(2, 2), + V(2, 3), + V(3, 1), + V(3, 2), + V(3, 3) + }; + M m2(I(a2), I(a2+sizeof(a2)/sizeof(a2[0])), C(5), A{}); + M m3(std::move(m1), A{}); + assert(m3 == m2); + assert(m3.get_allocator() == A{}); + assert(m3.key_comp() == C(5)); + assert(m1.empty()); + } #endif #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES } Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -38,5 +38,13 @@ int main() assert(m.begin() == m.end()); assert(m.get_allocator() == A()); } + { + typedef std::less C; + typedef explicit_allocator > A; + std::multimap m(A{}); + assert(m.empty()); + assert(m.begin() == m.end()); + assert(m.get_allocator() == A{}); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/compare_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/compare_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/compare_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -41,5 +41,14 @@ int main() assert(m.key_comp() == C(4)); assert(m.get_allocator() == A()); } + { + typedef test_compare > C; + typedef explicit_allocator > A; + std::multimap m(C(4), A{}); + assert(m.empty()); + assert(m.begin() == m.end()); + assert(m.key_comp() == C(4)); + assert(m.get_allocator() == A{}); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/copy_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/copy_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/copy_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -73,5 +73,30 @@ int main() assert(mo.get_allocator() == A()); assert(mo.key_comp() == C(5)); } + { + typedef std::pair V; + V ar[] = + { + V(1, 1), + V(1, 1.5), + V(1, 2), + V(2, 1), + V(2, 1.5), + V(2, 2), + V(3, 1), + V(3, 1.5), + V(3, 2), + }; + typedef test_compare > C; + typedef explicit_allocator A; + std::multimap mo(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A{}); + std::multimap m(mo, A{}); + assert(m == mo); + assert(m.get_allocator() == A{}); + assert(m.key_comp() == C(5)); + + assert(mo.get_allocator() == A{}); + assert(mo.key_comp() == C(5)); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -32,6 +32,20 @@ int main() assert(m.begin() == m.end()); } { + typedef explicit_allocator> A; + { + std::multimap, A> m; + assert(m.empty()); + assert(m.begin() == m.end()); + } + { + A a; + std::multimap, A> m(a); + assert(m.empty()); + assert(m.begin() == m.end()); + } + } + { std::multimap m = {}; assert(m.empty()); assert(m.begin() == m.end()); Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/initializer_list_compare_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/initializer_list_compare_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/initializer_list_compare_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -92,7 +92,7 @@ int main() assert(m.key_comp() == Cmp(4)); assert(m.get_allocator() == A()); } -#if _LIBCPP_STD_VER > 11 +#if TEST_STD_VER > 11 { typedef test_compare > C; typedef std::pair V; @@ -125,5 +125,39 @@ int main() assert(m.get_allocator() == a); } #endif + { + typedef test_compare > Cmp; + typedef explicit_allocator > A; + typedef std::multimap C; + typedef C::value_type V; + C m( + { + {1, 1}, + {1, 1.5}, + {1, 2}, + {2, 1}, + {2, 1.5}, + {2, 2}, + {3, 1}, + {3, 1.5}, + {3, 2} + }, + Cmp(4), A{} + ); + assert(m.size() == 9); + assert(distance(m.begin(), m.end()) == 9); + C::const_iterator i = m.cbegin(); + assert(*i == V(1, 1)); + assert(*++i == V(1, 1.5)); + assert(*++i == V(1, 2)); + assert(*++i == V(2, 1)); + assert(*++i == V(2, 1.5)); + assert(*++i == V(2, 2)); + assert(*++i == V(3, 1)); + assert(*++i == V(3, 1.5)); + assert(*++i == V(3, 2)); + assert(m.key_comp() == Cmp(4)); + assert(m.get_allocator() == A{}); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/iter_iter_comp_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -87,5 +87,36 @@ int main() assert(*next(m.begin(), 7) == V(3, 1.5)); assert(*next(m.begin(), 8) == V(3, 2)); } + { + typedef std::pair V; + V ar[] = + { + V(1, 1), + V(1, 1.5), + V(1, 2), + V(2, 1), + V(2, 1.5), + V(2, 2), + V(3, 1), + V(3, 1.5), + V(3, 2), + }; + typedef test_compare > C; + typedef explicit_allocator A; + std::multimap m(ar, ar+sizeof(ar)/sizeof(ar[0]), C(5), A{}); + assert(m.get_allocator() == A{}); + assert(m.key_comp() == C(5)); + assert(m.size() == 9); + assert(distance(m.begin(), m.end()) == 9); + assert(*m.begin() == V(1, 1)); + assert(*next(m.begin()) == V(1, 1.5)); + assert(*next(m.begin(), 2) == V(1, 2)); + assert(*next(m.begin(), 3) == V(2, 1)); + assert(*next(m.begin(), 4) == V(2, 1.5)); + assert(*next(m.begin(), 5) == V(2, 2)); + assert(*next(m.begin(), 6) == V(3, 1)); + assert(*next(m.begin(), 7) == V(3, 1.5)); + assert(*next(m.begin(), 8) == V(3, 2)); + } #endif } Modified: vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multimap/multimap.cons/move_alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -229,6 +229,45 @@ int main() assert(m3.key_comp() == C(5)); assert(m1.empty()); } + { + typedef std::pair V; + typedef std::pair VC; + typedef test_compare > C; + typedef explicit_allocator A; + typedef std::multimap M; + typedef std::move_iterator I; + V a1[] = + { + V(1, 1), + V(1, 2), + V(1, 3), + V(2, 1), + V(2, 2), + V(2, 3), + V(3, 1), + V(3, 2), + V(3, 3) + }; + M m1(I(a1), I(a1+sizeof(a1)/sizeof(a1[0])), C(5), A{}); + V a2[] = + { + V(1, 1), + V(1, 2), + V(1, 3), + V(2, 1), + V(2, 2), + V(2, 3), + V(3, 1), + V(3, 2), + V(3, 3) + }; + M m2(I(a2), I(a2+sizeof(a2)/sizeof(a2[0])), C(5), A{}); + M m3(std::move(m1), A{}); + assert(m3 == m2); + assert(m3.get_allocator() == A{}); + assert(m3.key_comp() == C(5)); + assert(m1.empty()); + } #endif #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES } Modified: vendor/libc++/dist/test/std/containers/associative/multiset/multiset.cons/default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/multiset/multiset.cons/default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/multiset/multiset.cons/default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -32,6 +32,20 @@ int main() assert(m.begin() == m.end()); } { + typedef explicit_allocator A; + { + std::multiset, A> m; + assert(m.empty()); + assert(m.begin() == m.end()); + } + { + A a; + std::multiset, A> m(a); + assert(m.empty()); + assert(m.begin() == m.end()); + } + } + { std::multiset m = {}; assert(m.empty()); assert(m.begin() == m.end()); Modified: vendor/libc++/dist/test/std/containers/associative/set/set.cons/default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/associative/set/set.cons/default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/associative/set/set.cons/default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -32,6 +32,20 @@ int main() assert(m.begin() == m.end()); } { + typedef explicit_allocator A; + { + std::set, A> m; + assert(m.empty()); + assert(m.begin() == m.end()); + } + { + A a; + std::set, A> m(a); + assert(m.empty()); + assert(m.begin() == m.end()); + } + } + { std::set m = {}; assert(m.empty()); assert(m.begin() == m.end()); Modified: vendor/libc++/dist/test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/sequences/deque/deque.cons/alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -34,5 +34,7 @@ int main() #if TEST_STD_VER >= 11 test(min_allocator()); test(min_allocator{}); + test(explicit_allocator()); + test(explicit_allocator{}); #endif } Modified: vendor/libc++/dist/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/sequences/forwardlist/forwardlist.cons/alloc.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -37,5 +37,13 @@ int main() assert(c.get_allocator() == A()); assert(c.empty()); } + { + typedef explicit_allocator A; + typedef A::value_type T; + typedef std::forward_list C; + C c(A{}); + assert(c.get_allocator() == A()); + assert(c.empty()); + } #endif } Modified: vendor/libc++/dist/test/std/containers/sequences/list/list.cons/default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/sequences/list/list.cons/default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/sequences/list/list.cons/default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -54,5 +54,15 @@ int main() assert(l.size() == 0); assert(std::distance(l.begin(), l.end()) == 0); } + { + std::list> l; + assert(l.size() == 0); + assert(std::distance(l.begin(), l.end()) == 0); + } + { + std::list> l((explicit_allocator())); + assert(l.size() == 0); + assert(std::distance(l.begin(), l.end()) == 0); + } #endif } Modified: vendor/libc++/dist/test/std/containers/sequences/vector.bool/construct_default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/sequences/vector.bool/construct_default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/sequences/vector.bool/construct_default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -66,5 +66,9 @@ int main() test0> >(); test1 > >(min_allocator()); } + { + test0> >(); + test1 > >(explicit_allocator()); + } #endif } Modified: vendor/libc++/dist/test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/sequences/vector/vector.cons/construct_default.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -86,5 +86,17 @@ int main() std::vector > v; assert(v.empty()); } + + { + test0> >(); + test0> >(); + test1 > >(explicit_allocator{}); + test1 > > + (explicit_allocator{}); + } + { + std::vector > v; + assert(v.empty()); + } #endif } Modified: vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp ============================================================================== --- vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp Wed Aug 24 17:37:28 2016 (r304764) +++ vendor/libc++/dist/test/std/containers/unord/unord.map/unord.map.cnstr/allocator.pass.cpp Wed Aug 24 17:37:53 2016 (r304765) @@ -65,7 +65,25 @@ int main() assert(c.load_factor() == 0); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:38:25 2016 Return-Path: Delivered-To: svn-src-vendor@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 84EDEBC5E32; Wed, 24 Aug 2016 17:38:25 +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 mx1.freebsd.org (Postfix) with ESMTPS id 3E7C315F2; Wed, 24 Aug 2016 17:38:25 +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 u7OHcOAP036502; Wed, 24 Aug 2016 17:38:24 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHcOml036501; Wed, 24 Aug 2016 17:38:24 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241738.u7OHcOml036501@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:38:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304766 - vendor/libc++/libc++-release_39-r279477 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.22 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: Wed, 24 Aug 2016 17:38:25 -0000 Author: dim Date: Wed Aug 24 17:38:24 2016 New Revision: 304766 URL: https://svnweb.freebsd.org/changeset/base/304766 Log: Tag libc++ release_39 branch r279477. Added: vendor/libc++/libc++-release_39-r279477/ - copied from r304765, vendor/libc++/dist/ From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:38:41 2016 Return-Path: Delivered-To: svn-src-vendor@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 8D2ADBC5E7E; Wed, 24 Aug 2016 17:38:41 +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 mx1.freebsd.org (Postfix) with ESMTPS id 6B246174B; Wed, 24 Aug 2016 17:38:41 +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 u7OHce42036559; Wed, 24 Aug 2016 17:38:40 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHcekO036555; Wed, 24 Aug 2016 17:38:40 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241738.u7OHcekO036555@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:38:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304767 - in vendor/lld/dist: ELF docs test/ELF 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.22 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: Wed, 24 Aug 2016 17:38:41 -0000 Author: dim Date: Wed Aug 24 17:38:40 2016 New Revision: 304767 URL: https://svnweb.freebsd.org/changeset/base/304767 Log: Vendor import of lld release_39 branch r279477: https://llvm.org/svn/llvm-project/lld/branches/release_39@279477 Modified: vendor/lld/dist/ELF/Target.cpp vendor/lld/dist/docs/ReleaseNotes.rst vendor/lld/dist/test/ELF/tls-i686.s Modified: vendor/lld/dist/ELF/Target.cpp ============================================================================== --- vendor/lld/dist/ELF/Target.cpp Wed Aug 24 17:38:24 2016 (r304766) +++ vendor/lld/dist/ELF/Target.cpp Wed Aug 24 17:38:40 2016 (r304767) @@ -436,6 +436,7 @@ uint64_t X86TargetInfo::getImplicitAdden case R_386_GOTPC: case R_386_PC32: case R_386_PLT32: + case R_386_TLS_LE: return read32le(Buf); } } Modified: vendor/lld/dist/docs/ReleaseNotes.rst ============================================================================== --- vendor/lld/dist/docs/ReleaseNotes.rst Wed Aug 24 17:38:24 2016 (r304766) +++ vendor/lld/dist/docs/ReleaseNotes.rst Wed Aug 24 17:38:40 2016 (r304767) @@ -5,9 +5,6 @@ LLD 3.9 Release Notes .. contents:: :local: -.. warning:: - These are in-progress notes for the upcoming LLVM 3.9 release. - Introduction ============ @@ -16,26 +13,90 @@ Here we describe the status of LLD, incl from the previous release. All LLD releases may be downloaded from the `LLVM releases web site `_. -Non-comprehensive list of changes in this release -================================================= +What's new in ELF Support? +========================== + +LLD 3.9 is a major milestone for us. It is the first release that can +link real-world large userland programs, including LLVM/Clang/LLD +themselves. In fact, for example, it can now be used to produce most +userland programs distributed as part of FreeBSD. + +Many contributors have joined to the project to develop new features, +port it to new architectures and fix issues since the last release. + +Link-Time Optimization +---------------------- + +Initial support for LTO has been added. It is compatible with +`the LLVM gold plugin `_ in terms of +command line flags and input file format so that LLD is usable as a +drop-in replacement for GNU gold. LTO is implemented as a native +feature unlike the GNU gold's plugin mechanism. + +Identical Code Folding +---------------------- + +LLD 3.9 can now merge identical code sections to produce smaller +output files. It is expected to be used with ``-ffunction-sections``. + +Symbol Versioning +----------------- + +LLD 3.9 is able to link against versioned symbols as well as produce +versioned symbols. Both the original Sun's symbol versioning scheme +and the GNU extension are supported. + +New Targets +----------- + +LLD has expanded support for new targets, including ARM/Thumb, the x32 +ABI and MIPS N64 ABI, in addition to the existing support for x86, +x86-64, MIPS, PowerPC and PPC64. + +TLS Relocation Optimizations +---------------------------- + +The ELF ABI specification of the thread-local variable define a few +peephole optimizations linkers can do by rewriting instructions at the +link-time to reduce run-time overhead to access TLS variables. That +feature has been implemented. -ELF Improvements +New Linker Flags ---------------- -* Initial support for LTO. +Many command line options have been added in this release, including: + +- Symbol resolution and output options: ``-Bsymbolic-functions``, + ``-export-dynamic-symbol``, ``-image-base``, ``-pie``, ``-end-lib``, + ``-start-lib``, ``-build-id={md5,sha1,none,0x}``. + +- Symbol versioning option: ``-dynamic-list``. + +- LTO options: ``-lto-O``, ``-lto-aa-pipeline``, ``-lto-jobs``, + ``-lto-newpm-passes``, ``-plugin``, ``-plugin-eq``, ``-plugin-opt``, + ``-plugin-opt-eq``, ``-disable-verify``, ``-mllvm``. + +- Driver optionss: ``-help``, ``-version``, ``-unresolved-symbols``. + +- Debug options: ``-demangle``, ``-reproduce``, ``-save-temps``, + ``-strip-debug``, ``-trace``, ``-trace-symbol``, + ``-warn-execstack``. + +- Exception handling option: ``-eh-frame-hdr``. + +- Identical Code Folding option: ``-icf``. Changes to the MIPS Target -~~~~~~~~~~~~~~~~~~~~~~~~~~ +-------------------------- * Added support for MIPS N64 ABI. * Added support for TLS relocations for both O32 and N64 MIPS ABIs. -COFF Improvements ------------------ - -* Item 1. - -MachO Improvements ------------------- +Building LLVM Toolchain with LLD +-------------------------------- -* Item 1. +A new CMake variable, ``LLVM_ENABLE_LLD``, has been added to use LLD +to build the LLVM toolchain. If the varaible is true, ``-fuse-ld=lld`` +option will be added to linker flags so that ``ld.lld`` is used +instead of default ``ld``. Because ``-fuse-ld=lld`` is a new compiler +driver option, you need Clang 3.8 or newer to use the feature. Modified: vendor/lld/dist/test/ELF/tls-i686.s ============================================================================== --- vendor/lld/dist/test/ELF/tls-i686.s Wed Aug 24 17:38:24 2016 (r304766) +++ vendor/lld/dist/test/ELF/tls-i686.s Wed Aug 24 17:38:40 2016 (r304767) @@ -28,7 +28,7 @@ _start: movl %gs:0, %ecx leal var@ntpoff(%ecx), %eax movl %gs:0, %ecx - leal var1@ntpoff(%ecx), %eax + leal var1@ntpoff+123(%ecx), %eax // DIS: Disassembly of section test: // DIS-NEXT: _start: @@ -41,7 +41,7 @@ _start: // DIS-NEXT: 1201c: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx // DIS-NEXT: 12023: 8d 81 f8 ff ff ff leal -8(%ecx), %eax // DIS-NEXT: 12029: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx -// DIS-NEXT: 12030: 8d 81 fc ff ff ff leal -4(%ecx), %eax +// DIS-NEXT: 12030: 8d 81 77 00 00 00 leal 119(%ecx), %eax // RELOC: Relocations [ // RELOC-NEXT: ] @@ -57,7 +57,7 @@ _start: // DISSHARED-NEXT: 201c: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx // DISSHARED-NEXT: 2023: 8d 81 00 00 00 00 leal (%ecx), %eax // DISSHARED-NEXT: 2029: 65 8b 0d 00 00 00 00 movl %gs:0, %ecx -// DISSHARED-NEXT: 2030: 8d 81 00 00 00 00 leal (%ecx), %eax +// DISSHARED-NEXT: 2030: 8d 81 7b 00 00 00 leal 123(%ecx), %eax // RELOCSHARED: Relocations [ // RELOCSHARED-NEXT: Section (4) .rel.dyn { From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:39:08 2016 Return-Path: Delivered-To: svn-src-vendor@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 7E172BC5EDB; Wed, 24 Aug 2016 17:39:08 +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 mx1.freebsd.org (Postfix) with ESMTPS id 373FA18CC; Wed, 24 Aug 2016 17:39:08 +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 u7OHd7A0036620; Wed, 24 Aug 2016 17:39:07 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHd7nm036619; Wed, 24 Aug 2016 17:39:07 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241739.u7OHd7nm036619@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:39:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304768 - vendor/lld/lldb-release_39-r279477 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.22 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: Wed, 24 Aug 2016 17:39:08 -0000 Author: dim Date: Wed Aug 24 17:39:07 2016 New Revision: 304768 URL: https://svnweb.freebsd.org/changeset/base/304768 Log: Tag lld release_39 branch r279477. Added: vendor/lld/lldb-release_39-r279477/ - copied from r304767, vendor/lld/dist/ From owner-svn-src-vendor@freebsd.org Wed Aug 24 17:39:41 2016 Return-Path: Delivered-To: svn-src-vendor@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 E170CBC5F32; Wed, 24 Aug 2016 17:39:41 +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 mx1.freebsd.org (Postfix) with ESMTPS id 982B51A2A; Wed, 24 Aug 2016 17:39:41 +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 u7OHde75036680; Wed, 24 Aug 2016 17:39:40 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7OHdeR4036679; Wed, 24 Aug 2016 17:39:40 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608241739.u7OHdeR4036679@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Wed, 24 Aug 2016 17:39:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304769 - vendor/lldb/lldb-release_39-r279477 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.22 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: Wed, 24 Aug 2016 17:39:42 -0000 Author: dim Date: Wed Aug 24 17:39:40 2016 New Revision: 304769 URL: https://svnweb.freebsd.org/changeset/base/304769 Log: Tag lldb release_39 branch r279477. Added: vendor/lldb/lldb-release_39-r279477/ - copied from r304768, vendor/lldb/dist/ From owner-svn-src-vendor@freebsd.org Fri Aug 26 20:51:11 2016 Return-Path: Delivered-To: svn-src-vendor@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 31993B74CE7; Fri, 26 Aug 2016 20:51:11 +0000 (UTC) (envelope-from markj@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 mx1.freebsd.org (Postfix) with ESMTPS id 0C3FBFFC; Fri, 26 Aug 2016 20:51:10 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7QKpAlF091416; Fri, 26 Aug 2016 20:51:10 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7QKp9O8091410; Fri, 26 Aug 2016 20:51:09 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201608262051.u7QKp9O8091410@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 26 Aug 2016 20:51:09 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304861 - in vendor/illumos/dist: cmd/dtrace/test/tst/common/llquantize lib/libdtrace/common 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.22 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: Fri, 26 Aug 2016 20:51:11 -0000 Author: markj Date: Fri Aug 26 20:51:09 2016 New Revision: 304861 URL: https://svnweb.freebsd.org/changeset/base/304861 Log: 7297 clear() on llquantize aggregation causes dtrace to exit 7298 printa() of multiple aggregations can fail for llquantize() illumos/illumos-gate@0ddc0ebb74cedb0ac394818c6e166c47eb8e62e5 Reviewed by: Patrick Mooney Reviewed by: Robert Mustacchi Reviewed by: Dan McDonald Reviewed by: Adam Leventhal Approved by: Richard Lowe Author: Bryan Cantrill Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.clear.d vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.clear.d.out vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.multiaggs.d vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.multiaggs.d.out Modified: vendor/illumos/dist/lib/libdtrace/common/dt_aggregate.c Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.clear.d ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.clear.d Fri Aug 26 20:51:09 2016 (r304861) @@ -0,0 +1,23 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright (c) 2016, Joyent, Inc. All rights reserved. + */ + +#pragma D option quiet + +BEGIN +{ + @ = llquantize(0, 10, 0, 6, 20); + clear(@); + exit(0); +} Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.clear.d.out ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.clear.d.out Fri Aug 26 20:51:09 2016 (r304861) @@ -0,0 +1,6 @@ + + + value ------------- Distribution ------------- count + < 1 | 0 + 1 | 0 + Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.multiaggs.d ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.multiaggs.d Fri Aug 26 20:51:09 2016 (r304861) @@ -0,0 +1,24 @@ +/* + * This file and its contents are supplied under the terms of the + * Common Development and Distribution License ("CDDL"), version 1.0. + * You may only use this file in accordance with the terms of version + * 1.0 of the CDDL. + * + * A full copy of the text of the CDDL should have accompanied this + * source. A copy of the CDDL is also available via the Internet at + * http://www.illumos.org/license/CDDL. + */ + +/* + * Copyright (c) 2016, Joyent, Inc. All rights reserved. + */ + +#pragma D option quiet + +BEGIN +{ + @sfo["tabs"] = llquantize(10000, 10, 0, 6, 20); + @yvr["spaces"] = count(); + printa(@sfo, @yvr); + exit(0); +} Added: vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.multiaggs.d.out ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ vendor/illumos/dist/cmd/dtrace/test/tst/common/llquantize/tst.multiaggs.d.out Fri Aug 26 20:51:09 2016 (r304861) @@ -0,0 +1,13 @@ + + spaces + value ------------- Distribution ------------- count + < 1 | 0 + 1 | 0 + 1 + tabs + value ------------- Distribution ------------- count + 9500 | 0 + 10000 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 1 + 15000 | 0 + 0 + Modified: vendor/illumos/dist/lib/libdtrace/common/dt_aggregate.c ============================================================================== --- vendor/illumos/dist/lib/libdtrace/common/dt_aggregate.c Fri Aug 26 20:23:10 2016 (r304860) +++ vendor/illumos/dist/lib/libdtrace/common/dt_aggregate.c Fri Aug 26 20:51:09 2016 (r304861) @@ -25,7 +25,7 @@ */ /* - * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright (c) 2016, Joyent, Inc. All rights reserved. * Copyright (c) 2012 by Delphix. All rights reserved. */ @@ -1145,7 +1145,13 @@ dt_aggwalk_rval(dtrace_hdl_t *dtp, dt_ah size = rec->dtrd_size; data = &h->dtahe_data; - if (rec->dtrd_action == DTRACEAGG_LQUANTIZE) { + if (rec->dtrd_action == DTRACEAGG_LQUANTIZE || + rec->dtrd_action == DTRACEAGG_LLQUANTIZE) { + /* + * For lquantize() and llquantize(), we want to be + * sure to not zero the aggregation parameters; step + * over them and adjust our size accordingly. + */ offs = sizeof (uint64_t); size -= sizeof (uint64_t); } @@ -1894,12 +1900,13 @@ dtrace_aggregate_walk_joined(dtrace_hdl_ rec = &aggdesc->dtagd_rec[aggdesc->dtagd_nrecs - 1]; /* - * Now for the more complicated part. If (and only if) this - * is an lquantize() aggregating action, zero-filled data is - * not equivalent to an empty record: we must also get the - * parameters for the lquantize(). + * Now for the more complicated part. For the lquantize() and + * llquantize() aggregating actions, zero-filled data is not + * equivalent to an empty record: we must also get the + * parameters for the lquantize()/llquantize(). */ - if (rec->dtrd_action == DTRACEAGG_LQUANTIZE) { + if (rec->dtrd_action == DTRACEAGG_LQUANTIZE || + rec->dtrd_action == DTRACEAGG_LLQUANTIZE) { if (aggdata->dtada_data != NULL) { /* * The easier case here is if we actually have @@ -1920,7 +1927,7 @@ dtrace_aggregate_walk_joined(dtrace_hdl_ * -- either directly or indirectly.) So as * gross as it is, we'll grovel around in the * compiler-generated information to find the - * lquantize() parameters. + * lquantize()/llquantize() parameters. */ dtrace_stmtdesc_t *sdp; dt_ident_t *aid; From owner-svn-src-vendor@freebsd.org Fri Aug 26 22:02:38 2016 Return-Path: Delivered-To: svn-src-vendor@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 E9412B76D33; Fri, 26 Aug 2016 22:02:38 +0000 (UTC) (envelope-from mm@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 mx1.freebsd.org (Postfix) with ESMTPS id BC476178; Fri, 26 Aug 2016 22:02:38 +0000 (UTC) (envelope-from mm@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7QM2ba9019320; Fri, 26 Aug 2016 22:02:37 GMT (envelope-from mm@FreeBSD.org) Received: (from mm@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7QM2bvq019315; Fri, 26 Aug 2016 22:02:37 GMT (envelope-from mm@FreeBSD.org) Message-Id: <201608262202.u7QM2bvq019315@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: mm set sender to mm@FreeBSD.org using -f From: Martin Matuska Date: Fri, 26 Aug 2016 22:02:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304866 - in vendor/libarchive/dist: libarchive tar 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.22 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: Fri, 26 Aug 2016 22:02:39 -0000 Author: mm Date: Fri Aug 26 22:02:37 2016 New Revision: 304866 URL: https://svnweb.freebsd.org/changeset/base/304866 Log: Update vendor/libarchive to git 299c6bf136b9bc328b498505f24f87e732b73ff6 Vendor issues fixed: Issue #731: Reject tar entries >= INT64_MAX Issue #744 (part of Issue #743): Enforce sandbox with very long pathnames Issue #748: Zip decompression failure with highly-compressed data Issue #767: Buffer overflow printing a filename Issue #770: Be more careful about extra_length Modified: vendor/libarchive/dist/libarchive/archive_read_support_format_tar.c vendor/libarchive/dist/libarchive/archive_read_support_format_zip.c vendor/libarchive/dist/libarchive/archive_write_disk_acl.c vendor/libarchive/dist/libarchive/archive_write_disk_posix.c vendor/libarchive/dist/tar/util.c Modified: vendor/libarchive/dist/libarchive/archive_read_support_format_tar.c ============================================================================== --- vendor/libarchive/dist/libarchive/archive_read_support_format_tar.c Fri Aug 26 21:28:24 2016 (r304865) +++ vendor/libarchive/dist/libarchive/archive_read_support_format_tar.c Fri Aug 26 22:02:37 2016 (r304866) @@ -1128,8 +1128,15 @@ header_common(struct archive_read *a, st if (tar->entry_bytes_remaining < 0) { tar->entry_bytes_remaining = 0; archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, - "Tar entry has negative size?"); - err = ARCHIVE_WARN; + "Tar entry has negative size"); + return (ARCHIVE_FATAL); + } + if (tar->entry_bytes_remaining == INT64_MAX) { + /* Note: tar_atol returns INT64_MAX on overflow */ + tar->entry_bytes_remaining = 0; + archive_set_error(&a->archive, ARCHIVE_ERRNO_MISC, + "Tar entry size overflow"); + return (ARCHIVE_FATAL); } tar->realsize = tar->entry_bytes_remaining; archive_entry_set_size(entry, tar->entry_bytes_remaining); Modified: vendor/libarchive/dist/libarchive/archive_read_support_format_zip.c ============================================================================== --- vendor/libarchive/dist/libarchive/archive_read_support_format_zip.c Fri Aug 26 21:28:24 2016 (r304865) +++ vendor/libarchive/dist/libarchive/archive_read_support_format_zip.c Fri Aug 26 22:02:37 2016 (r304866) @@ -418,18 +418,30 @@ zip_time(const char *p) * id1+size1+data1 + id2+size2+data2 ... * triplets. id and size are 2 bytes each. */ -static void -process_extra(const char *p, size_t extra_length, struct zip_entry* zip_entry) +static int +process_extra(struct archive_read *a, const char *p, size_t extra_length, struct zip_entry* zip_entry) { unsigned offset = 0; - while (offset < extra_length - 4) { + if (extra_length == 0) { + return ARCHIVE_OK; + } + + if (extra_length < 4) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Too-small extra data: Need at least 4 bytes, but only found %d bytes", (int)extra_length); + return ARCHIVE_FAILED; + } + while (offset <= extra_length - 4) { unsigned short headerid = archive_le16dec(p + offset); unsigned short datasize = archive_le16dec(p + offset + 2); offset += 4; if (offset + datasize > extra_length) { - break; + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Extra data overflow: Need %d bytes but only found %d bytes", + (int)datasize, (int)(extra_length - offset)); + return ARCHIVE_FAILED; } #ifdef DEBUG fprintf(stderr, "Header id 0x%04x, length %d\n", @@ -715,13 +727,13 @@ process_extra(const char *p, size_t extr } offset += datasize; } -#ifdef DEBUG - if (offset != extra_length) - { - fprintf(stderr, - "Extra data field contents do not match reported size!\n"); + if (offset != extra_length) { + archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, + "Malformed extra data: Consumed %d bytes of %d bytes", + (int)offset, (int)extra_length); + return ARCHIVE_FAILED; } -#endif + return ARCHIVE_OK; } /* @@ -840,7 +852,9 @@ zip_read_local_file_header(struct archiv return (ARCHIVE_FATAL); } - process_extra(h, extra_length, zip_entry); + if (ARCHIVE_OK != process_extra(a, h, extra_length, zip_entry)) { + return ARCHIVE_FATAL; + } __archive_read_consume(a, extra_length); /* Work around a bug in Info-Zip: When reading from a pipe, it @@ -1293,7 +1307,7 @@ zip_read_data_deflate(struct archive_rea && bytes_avail > zip->entry_bytes_remaining) { bytes_avail = (ssize_t)zip->entry_bytes_remaining; } - if (bytes_avail <= 0) { + if (bytes_avail < 0) { archive_set_error(&a->archive, ARCHIVE_ERRNO_FILE_FORMAT, "Truncated ZIP file body"); return (ARCHIVE_FATAL); @@ -2691,7 +2705,9 @@ slurp_central_directory(struct archive_r "Truncated ZIP file header"); return ARCHIVE_FATAL; } - process_extra(p + filename_length, extra_length, zip_entry); + if (ARCHIVE_OK != process_extra(a, p + filename_length, extra_length, zip_entry)) { + return ARCHIVE_FATAL; + } /* * Mac resource fork files are stored under the Modified: vendor/libarchive/dist/libarchive/archive_write_disk_acl.c ============================================================================== --- vendor/libarchive/dist/libarchive/archive_write_disk_acl.c Fri Aug 26 21:28:24 2016 (r304865) +++ vendor/libarchive/dist/libarchive/archive_write_disk_acl.c Fri Aug 26 22:02:37 2016 (r304866) @@ -138,6 +138,7 @@ set_acl(struct archive *a, int fd, const acl_permset_t acl_permset; #ifdef ACL_TYPE_NFS4 acl_flagset_t acl_flagset; + int r; #endif int ret; int ae_type, ae_permset, ae_tag, ae_id; @@ -145,7 +146,7 @@ set_acl(struct archive *a, int fd, const gid_t ae_gid; const char *ae_name; int entries; - int i, r; + int i; ret = ARCHIVE_OK; entries = archive_acl_reset(abstract_acl, ae_requested_type); Modified: vendor/libarchive/dist/libarchive/archive_write_disk_posix.c ============================================================================== --- vendor/libarchive/dist/libarchive/archive_write_disk_posix.c Fri Aug 26 21:28:24 2016 (r304865) +++ vendor/libarchive/dist/libarchive/archive_write_disk_posix.c Fri Aug 26 22:02:37 2016 (r304866) @@ -2401,8 +2401,18 @@ check_symlinks(struct archive_write_disk r = lstat(a->name, &st); if (r != 0) { /* We've hit a dir that doesn't exist; stop now. */ - if (errno == ENOENT) + if (errno == ENOENT) { break; + } else { + /* Note: This effectively disables deep directory + * support when security checks are enabled. + * Otherwise, very long pathnames that trigger + * an error here could evade the sandbox. + * TODO: We could do better, but it would probably + * require merging the symlink checks with the + * deep-directory editing. */ + return (ARCHIVE_FAILED); + } } else if (S_ISLNK(st.st_mode)) { if (c == '\0') { /* Modified: vendor/libarchive/dist/tar/util.c ============================================================================== --- vendor/libarchive/dist/tar/util.c Fri Aug 26 21:28:24 2016 (r304865) +++ vendor/libarchive/dist/tar/util.c Fri Aug 26 22:02:37 2016 (r304866) @@ -182,7 +182,7 @@ safe_fprintf(FILE *f, const char *fmt, . } /* If our output buffer is full, dump it and keep going. */ - if (i > (sizeof(outbuff) - 20)) { + if (i > (sizeof(outbuff) - 128)) { outbuff[i] = '\0'; fprintf(f, "%s", outbuff); i = 0; From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:37:24 2016 Return-Path: Delivered-To: svn-src-vendor@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 0DA68B771E3; Sat, 27 Aug 2016 11:37:24 +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 mx1.freebsd.org (Postfix) with ESMTPS id CD94FA30; Sat, 27 Aug 2016 11:37:23 +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 u7RBbNEL020264; Sat, 27 Aug 2016 11:37:23 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBbMw0020262; Sat, 27 Aug 2016 11:37:22 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271137.u7RBbMw0020262@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:37:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304897 - in vendor/llvm/dist: lib/Transforms/Scalar test/Transforms/SCCP 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.22 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, 27 Aug 2016 11:37:24 -0000 Author: dim Date: Sat Aug 27 11:37:22 2016 New Revision: 304897 URL: https://svnweb.freebsd.org/changeset/base/304897 Log: Vendor import of llvm release_39 branch r279689: https://llvm.org/svn/llvm-project/llvm/branches/release_39@279689 Modified: vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp vendor/llvm/dist/test/Transforms/SCCP/calltest.ll Modified: vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp ============================================================================== --- vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp Sat Aug 27 11:07:57 2016 (r304896) +++ vendor/llvm/dist/lib/Transforms/Scalar/SCCP.cpp Sat Aug 27 11:37:22 2016 (r304897) @@ -1538,17 +1538,6 @@ static bool tryToReplaceWithConstant(SCC return true; } -static bool tryToReplaceInstWithConstant(SCCPSolver &Solver, Instruction *Inst, - bool shouldEraseFromParent) { - if (!tryToReplaceWithConstant(Solver, Inst)) - return false; - - // Delete the instruction. - if (shouldEraseFromParent) - Inst->eraseFromParent(); - return true; -} - // runSCCP() - Run the Sparse Conditional Constant Propagation algorithm, // and return true if the function was modified. // @@ -1597,8 +1586,9 @@ static bool runSCCP(Function &F, const D if (Inst->getType()->isVoidTy() || isa(Inst)) continue; - if (tryToReplaceInstWithConstant(Solver, Inst, - true /* shouldEraseFromParent */)) { + if (tryToReplaceWithConstant(Solver, Inst)) { + if (isInstructionTriviallyDead(Inst)) + Inst->eraseFromParent(); // Hey, we just changed something! MadeChanges = true; ++NumInstRemoved; @@ -1789,10 +1779,9 @@ static bool runIPSCCP(Module &M, const D Instruction *Inst = &*BI++; if (Inst->getType()->isVoidTy()) continue; - if (tryToReplaceInstWithConstant( - Solver, Inst, - !isa(Inst) && - !isa(Inst) /* shouldEraseFromParent */)) { + if (tryToReplaceWithConstant(Solver, Inst)) { + if (!isa(Inst) && !isa(Inst)) + Inst->eraseFromParent(); // Hey, we just changed something! MadeChanges = true; ++IPNumInstRemoved; Modified: vendor/llvm/dist/test/Transforms/SCCP/calltest.ll ============================================================================== --- vendor/llvm/dist/test/Transforms/SCCP/calltest.ll Sat Aug 27 11:07:57 2016 (r304896) +++ vendor/llvm/dist/test/Transforms/SCCP/calltest.ll Sat Aug 27 11:37:22 2016 (r304897) @@ -1,12 +1,16 @@ -; RUN: opt < %s -sccp -loop-deletion -simplifycfg -S | not grep br +; RUN: opt < %s -sccp -loop-deletion -simplifycfg -S | FileCheck %s +declare double @sqrt(double) readnone nounwind +%empty = type {} +declare %empty @has_side_effects() + +define double @test_0(i32 %param) { +; CHECK-LABEL: @test_0( +; CHECK-NOT: br +entry: ; No matter how hard you try, sqrt(1.0) is always 1.0. This allows the ; optimizer to delete this loop. -declare double @sqrt(double) - -define double @test(i32 %param) { -entry: br label %Loop Loop: ; preds = %Loop, %entry %I2 = phi i32 [ 0, %entry ], [ %I3, %Loop ] ; [#uses=1] @@ -19,3 +23,9 @@ Exit: ; preds = %Loop ret double %V } +define i32 @test_1() { +; CHECK-LABEL: @test_1( +; CHECK: call %empty @has_side_effects() + %1 = call %empty @has_side_effects() + ret i32 0 +} From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:37:46 2016 Return-Path: Delivered-To: svn-src-vendor@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 239EFB7723E; Sat, 27 Aug 2016 11:37:46 +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 mx1.freebsd.org (Postfix) with ESMTPS id CC71DB81; Sat, 27 Aug 2016 11:37:45 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u7RBbi53020318; Sat, 27 Aug 2016 11:37:44 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBbi96020317; Sat, 27 Aug 2016 11:37:44 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271137.u7RBbi96020317@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:37:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304898 - vendor/llvm/llvm-release_39-r279689 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.22 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, 27 Aug 2016 11:37:46 -0000 Author: dim Date: Sat Aug 27 11:37:44 2016 New Revision: 304898 URL: https://svnweb.freebsd.org/changeset/base/304898 Log: Tag llvm release_39 branch r279689. Added: vendor/llvm/llvm-release_39-r279689/ - copied from r304897, vendor/llvm/dist/ From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:38:22 2016 Return-Path: Delivered-To: svn-src-vendor@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 D319EB77291; Sat, 27 Aug 2016 11:38:22 +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 mx1.freebsd.org (Postfix) with ESMTPS id 87EF7CDA; Sat, 27 Aug 2016 11:38:22 +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 u7RBcLuR020381; Sat, 27 Aug 2016 11:38:21 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBcLZ8020380; Sat, 27 Aug 2016 11:38:21 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271138.u7RBcLZ8020380@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:38:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304899 - vendor/clang/clang-release_39-r279689 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.22 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, 27 Aug 2016 11:38:22 -0000 Author: dim Date: Sat Aug 27 11:38:21 2016 New Revision: 304899 URL: https://svnweb.freebsd.org/changeset/base/304899 Log: Tag clang release_39 branch r279689. Added: vendor/clang/clang-release_39-r279689/ - copied from r304898, vendor/clang/dist/ From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:38:55 2016 Return-Path: Delivered-To: svn-src-vendor@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 1E0A1B77340; Sat, 27 Aug 2016 11:38:55 +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 mx1.freebsd.org (Postfix) with ESMTPS id CAB4AF62; Sat, 27 Aug 2016 11:38:54 +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 u7RBcsCQ020501; Sat, 27 Aug 2016 11:38:54 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBcsiq020500; Sat, 27 Aug 2016 11:38:54 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271138.u7RBcsiq020500@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:38:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304901 - vendor/compiler-rt/compiler-rt-release_39-r279689 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.22 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, 27 Aug 2016 11:38:55 -0000 Author: dim Date: Sat Aug 27 11:38:53 2016 New Revision: 304901 URL: https://svnweb.freebsd.org/changeset/base/304901 Log: Tag compiler-rt release_39 branch r279689. Added: vendor/compiler-rt/compiler-rt-release_39-r279689/ - copied from r304900, vendor/compiler-rt/dist/ From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:39:31 2016 Return-Path: Delivered-To: svn-src-vendor@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 4EAEDB77391; Sat, 27 Aug 2016 11:39:31 +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 mx1.freebsd.org (Postfix) with ESMTPS id 06F0C10F; Sat, 27 Aug 2016 11:39:30 +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 u7RBdUcs020573; Sat, 27 Aug 2016 11:39:30 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBdUJI020572; Sat, 27 Aug 2016 11:39:30 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271139.u7RBdUJI020572@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:39:30 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304902 - vendor/libc++/libc++-release_39-r279689 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.22 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, 27 Aug 2016 11:39:31 -0000 Author: dim Date: Sat Aug 27 11:39:30 2016 New Revision: 304902 URL: https://svnweb.freebsd.org/changeset/base/304902 Log: Tag libc++ release_39 branch r279689. Added: vendor/libc++/libc++-release_39-r279689/ - copied from r304901, vendor/libc++/dist/ From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:40:12 2016 Return-Path: Delivered-To: svn-src-vendor@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 68F9FB7744E; Sat, 27 Aug 2016 11:40:12 +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 mx1.freebsd.org (Postfix) with ESMTPS id 2127F373; Sat, 27 Aug 2016 11:40:12 +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 u7RBeBt5020855; Sat, 27 Aug 2016 11:40:11 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBeB70020851; Sat, 27 Aug 2016 11:40:11 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271140.u7RBeB70020851@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:40:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304903 - vendor/lld/lld-release_39-r279689 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.22 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, 27 Aug 2016 11:40:12 -0000 Author: dim Date: Sat Aug 27 11:40:11 2016 New Revision: 304903 URL: https://svnweb.freebsd.org/changeset/base/304903 Log: Tag lld release_39 branch r279689. Added: vendor/lld/lld-release_39-r279689/ - copied from r304902, vendor/lld/dist/ From owner-svn-src-vendor@freebsd.org Sat Aug 27 11:40:39 2016 Return-Path: Delivered-To: svn-src-vendor@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 36639B774F9; Sat, 27 Aug 2016 11:40:39 +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 mx1.freebsd.org (Postfix) with ESMTPS id E101A80F; Sat, 27 Aug 2016 11:40:38 +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 u7RBecXu020971; Sat, 27 Aug 2016 11:40:38 GMT (envelope-from dim@FreeBSD.org) Received: (from dim@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u7RBecMV020970; Sat, 27 Aug 2016 11:40:38 GMT (envelope-from dim@FreeBSD.org) Message-Id: <201608271140.u7RBecMV020970@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: dim set sender to dim@FreeBSD.org using -f From: Dimitry Andric Date: Sat, 27 Aug 2016 11:40:38 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org Subject: svn commit: r304904 - vendor/lldb/lldb-release_39-r279689 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.22 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, 27 Aug 2016 11:40:39 -0000 Author: dim Date: Sat Aug 27 11:40:37 2016 New Revision: 304904 URL: https://svnweb.freebsd.org/changeset/base/304904 Log: Tag lldb release_39 branch r279689. Added: vendor/lldb/lldb-release_39-r279689/ - copied from r304903, vendor/lldb/dist/