Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 14 Jan 2017 15:38:48 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-vendor@freebsd.org
Subject:   svn commit: r312177 - in vendor/compiler-rt/dist: cmake cmake/Modules lib/asan lib/asan/tests lib/builtins/arm lib/msan/tests lib/sancov lib/sanitizer_common lib/sanitizer_common/tests lib/scudo li...
Message-ID:  <201701141538.v0EFcmsY026830@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Sat Jan 14 15:38:48 2017
New Revision: 312177
URL: https://svnweb.freebsd.org/changeset/base/312177

Log:
  Vendor import of compiler-rt release_40 branch r292009:
  https://llvm.org/svn/llvm-project/compiler-rt/branches/release_40@292009

Added:
  vendor/compiler-rt/dist/lib/sancov/
  vendor/compiler-rt/dist/lib/scudo/scudo_crc32.cpp   (contents, props changed)
  vendor/compiler-rt/dist/lib/scudo/scudo_crc32.h   (contents, props changed)
  vendor/compiler-rt/dist/test/tsan/Darwin/ignore-noninstrumented.mm
Modified:
  vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake
  vendor/compiler-rt/dist/cmake/Modules/CompilerRTDarwinUtils.cmake
  vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake
  vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake
  vendor/compiler-rt/dist/cmake/Modules/SanitizerUtils.cmake
  vendor/compiler-rt/dist/cmake/config-ix.cmake
  vendor/compiler-rt/dist/lib/asan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/asan/asan_activation.cc
  vendor/compiler-rt/dist/lib/asan/asan_activation_flags.inc
  vendor/compiler-rt/dist/lib/asan/asan_allocator.cc
  vendor/compiler-rt/dist/lib/asan/asan_flags.cc
  vendor/compiler-rt/dist/lib/asan/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/builtins/arm/adddf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/addsf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/comparesf2.S
  vendor/compiler-rt/dist/lib/builtins/arm/divdf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/divsf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/eqdf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/eqsf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/extendsfdf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/fixdfsivfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/fixsfsivfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/fixunsdfsivfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/fixunssfsivfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/floatsidfvfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/floatsisfvfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/floatunssidfvfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/floatunssisfvfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/gedf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/gesf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/gtdf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/gtsf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/ledf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/lesf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/ltdf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/ltsf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/muldf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/mulsf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/nedf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/negdf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/negsf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/nesf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/subdf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/subsf3vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/truncdfsf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/unorddf2vfp.S
  vendor/compiler-rt/dist/lib/builtins/arm/unordsf2vfp.S
  vendor/compiler-rt/dist/lib/msan/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_common.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_coverage_libcdep.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libignore.cc
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_libignore.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_platform_limits_posix.h
  vendor/compiler-rt/dist/lib/sanitizer_common/sanitizer_quarantine.h
  vendor/compiler-rt/dist/lib/sanitizer_common/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/scudo/CMakeLists.txt
  vendor/compiler-rt/dist/lib/scudo/scudo_allocator.cpp
  vendor/compiler-rt/dist/lib/scudo/scudo_utils.cpp
  vendor/compiler-rt/dist/lib/scudo/scudo_utils.h
  vendor/compiler-rt/dist/lib/stats/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_flags.inc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors.cc
  vendor/compiler-rt/dist/lib/tsan/rtl/tsan_interceptors.h
  vendor/compiler-rt/dist/lib/tsan/tests/CMakeLists.txt
  vendor/compiler-rt/dist/lib/ubsan/CMakeLists.txt
  vendor/compiler-rt/dist/lib/xray/xray_AArch64.cc
  vendor/compiler-rt/dist/test/asan/TestCases/Linux/thread_local_quarantine_size_kb.cc
  vendor/compiler-rt/dist/test/asan/TestCases/Posix/start-deactivated.cc
  vendor/compiler-rt/dist/test/asan/lit.cfg
  vendor/compiler-rt/dist/test/profile/Linux/comdat_rename.test
  vendor/compiler-rt/dist/test/profile/lit.cfg
  vendor/compiler-rt/dist/test/xray/TestCases/Linux/patching-unpatching.cc

Modified: vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/cmake/Modules/AddCompilerRT.cmake	Sat Jan 14 15:38:48 2017	(r312177)
@@ -94,7 +94,7 @@ endfunction()
 #                         OS <os list>
 #                         SOURCES <source files>
 #                         CFLAGS <compile flags>
-#                         LINKFLAGS <linker flags>
+#                         LINK_FLAGS <linker flags>
 #                         DEFS <compile definitions>
 #                         LINK_LIBS <linked libraries> (only for shared library)
 #                         OBJECT_LIBS <object libraries to use as sources>
@@ -107,7 +107,7 @@ function(add_compiler_rt_runtime name ty
   cmake_parse_arguments(LIB
     ""
     "PARENT_TARGET"
-    "OS;ARCHS;SOURCES;CFLAGS;LINKFLAGS;DEFS;LINK_LIBS;OBJECT_LIBS"
+    "OS;ARCHS;SOURCES;CFLAGS;LINK_FLAGS;DEFS;LINK_LIBS;OBJECT_LIBS"
     ${ARGN})
   set(libnames)
   if(APPLE)
@@ -116,7 +116,7 @@ function(add_compiler_rt_runtime name ty
         set(libname "${name}_${os}")
       else()
         set(libname "${name}_${os}_dynamic")
-        set(extra_linkflags_${libname} ${DARWIN_${os}_LINKFLAGS} ${LIB_LINKFLAGS})
+        set(extra_link_flags_${libname} ${DARWIN_${os}_LINK_FLAGS} ${LIB_LINK_FLAGS})
       endif()
       list_intersect(LIB_ARCHS_${libname} DARWIN_${os}_ARCHS LIB_ARCHS)
       if(LIB_ARCHS_${libname})
@@ -139,7 +139,7 @@ function(add_compiler_rt_runtime name ty
       else()
         set(libname "${name}-dynamic-${arch}")
         set(extra_cflags_${libname} ${TARGET_${arch}_CFLAGS} ${LIB_CFLAGS})
-        set(extra_linkflags_${libname} ${TARGET_${arch}_LINKFLAGS} ${LIB_LINKFLAGS})
+        set(extra_link_flags_${libname} ${TARGET_${arch}_LINK_FLAGS} ${LIB_LINK_FLAGS})
         if(WIN32)
           set(output_name_${libname} ${name}_dynamic-${arch}${COMPILER_RT_OS_SUFFIX})
         else()
@@ -188,7 +188,7 @@ function(add_compiler_rt_runtime name ty
 
     add_library(${libname} ${type} ${sources_${libname}})
     set_target_compile_flags(${libname} ${extra_cflags_${libname}})
-    set_target_link_flags(${libname} ${extra_linkflags_${libname}})
+    set_target_link_flags(${libname} ${extra_link_flags_${libname}})
     set_property(TARGET ${libname} APPEND PROPERTY
                 COMPILE_DEFINITIONS ${LIB_DEFS})
     set_target_output_directories(${libname} ${COMPILER_RT_LIBRARY_OUTPUT_DIR})
@@ -243,7 +243,7 @@ endfunction()
 # when cross compiling, COMPILER_RT_TEST_COMPILER_CFLAGS help
 # in compilation and linking of unittests.
 string(REPLACE " " ";" COMPILER_RT_UNITTEST_CFLAGS "${COMPILER_RT_TEST_COMPILER_CFLAGS}")
-set(COMPILER_RT_UNITTEST_LINKFLAGS ${COMPILER_RT_UNITTEST_CFLAGS})
+set(COMPILER_RT_UNITTEST_LINK_FLAGS ${COMPILER_RT_UNITTEST_CFLAGS})
 
 # Unittests support.
 set(COMPILER_RT_GTEST_PATH ${LLVM_MAIN_SRC_DIR}/utils/unittest/googletest)

Modified: vendor/compiler-rt/dist/cmake/Modules/CompilerRTDarwinUtils.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/Modules/CompilerRTDarwinUtils.cmake	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/cmake/Modules/CompilerRTDarwinUtils.cmake	Sat Jan 14 15:38:48 2017	(r312177)
@@ -66,7 +66,7 @@ function(darwin_test_archs os valid_arch
     file(WRITE ${SIMPLE_C} "#include <stdio.h>\nint main() { printf(__FILE__); return 0; }\n")
   
     set(os_linker_flags)
-    foreach(flag ${DARWIN_${os}_LINKFLAGS})
+    foreach(flag ${DARWIN_${os}_LINK_FLAGS})
       set(os_linker_flags "${os_linker_flags} ${flag}")
     endforeach()
   endif()

Modified: vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/cmake/Modules/CompilerRTLink.cmake	Sat Jan 14 15:38:48 2017	(r312177)
@@ -1,16 +1,16 @@
 # Link a shared library with COMPILER_RT_TEST_COMPILER.
 # clang_link_shared(<output.so>
 #                   OBJECTS <list of input objects>
-#                   LINKFLAGS <list of link flags>
+#                   LINK_FLAGS <list of link flags>
 #                   DEPS <list of dependencies>)
 macro(clang_link_shared so_file)
-  cmake_parse_arguments(SOURCE "" "" "OBJECTS;LINKFLAGS;DEPS" ${ARGN})
+  cmake_parse_arguments(SOURCE "" "" "OBJECTS;LINK_FLAGS;DEPS" ${ARGN})
   if(NOT COMPILER_RT_STANDALONE_BUILD)
     list(APPEND SOURCE_DEPS clang)
   endif()
   add_custom_command(
     OUTPUT ${so_file}
     COMMAND ${COMPILER_RT_TEST_COMPILER} -o "${so_file}" -shared
-            ${SOURCE_LINKFLAGS} ${SOURCE_OBJECTS}
+            ${SOURCE_LINK_FLAGS} ${SOURCE_OBJECTS}
     DEPENDS ${SOURCE_DEPS})
 endmacro()

Modified: vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/cmake/Modules/CompilerRTUtils.cmake	Sat Jan 14 15:38:48 2017	(r312177)
@@ -126,7 +126,7 @@ endfunction()
 # If successful, saves target flags for this architecture.
 macro(test_target_arch arch def)
   set(TARGET_${arch}_CFLAGS ${ARGN})
-  set(TARGET_${arch}_LINKFLAGS ${ARGN})
+  set(TARGET_${arch}_LINK_FLAGS ${ARGN})
   set(argstring "")
   foreach(arg ${ARGN})
     set(argstring "${argstring} ${arg}")
@@ -219,8 +219,18 @@ macro(load_llvm_config)
   set(LLVM_MAIN_SRC_DIR ${MAIN_SRC_DIR} CACHE PATH "Path to LLVM source tree")
 
   # Make use of LLVM CMake modules.
-  file(TO_CMAKE_PATH ${LLVM_BINARY_DIR} LLVM_BINARY_DIR_CMAKE_STYLE)
-  set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR_CMAKE_STYLE}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
+  # --cmakedir is supported since llvm r291218 (4.0 release)
+  execute_process(
+    COMMAND ${LLVM_CONFIG_PATH} --cmakedir
+    RESULT_VARIABLE HAD_ERROR
+    OUTPUT_VARIABLE CONFIG_OUTPUT)
+  if(NOT HAD_ERROR)
+    string(STRIP "${CONFIG_OUTPUT}" LLVM_CMAKE_PATH)
+  else()
+    file(TO_CMAKE_PATH ${LLVM_BINARY_DIR} LLVM_BINARY_DIR_CMAKE_STYLE)
+    set(LLVM_CMAKE_PATH "${LLVM_BINARY_DIR_CMAKE_STYLE}/lib${LLVM_LIBDIR_SUFFIX}/cmake/llvm")
+  endif()
+
   list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_PATH}")
   # Get some LLVM variables from LLVMConfig.
   include("${LLVM_CMAKE_PATH}/LLVMConfig.cmake")

Modified: vendor/compiler-rt/dist/cmake/Modules/SanitizerUtils.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/Modules/SanitizerUtils.cmake	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/cmake/Modules/SanitizerUtils.cmake	Sat Jan 14 15:38:48 2017	(r312177)
@@ -48,13 +48,13 @@ endmacro()
 
 # This function is only used on Darwin, where undefined symbols must be specified
 # in the linker invocation.
-function(add_weak_symbols libname linkflags)
+function(add_weak_symbols libname link_flags)
   file(STRINGS "${COMPILER_RT_SOURCE_DIR}/lib/${libname}/weak_symbols.txt" WEAK_SYMBOLS)
-  set(local_linkflags ${${linkflags}})
+  set(local_link_flags ${${link_flags}})
   foreach(SYMBOL ${WEAK_SYMBOLS})
-    set(local_linkflags ${local_linkflags} -Wl,-U,${SYMBOL})
+    set(local_link_flags ${local_link_flags} -Wl,-U,${SYMBOL})
   endforeach()
-  set(${linkflags} ${local_linkflags} PARENT_SCOPE)
+  set(${link_flags} ${local_link_flags} PARENT_SCOPE)
 endfunction()
 
 macro(add_sanitizer_rt_version_list name)

Modified: vendor/compiler-rt/dist/cmake/config-ix.cmake
==============================================================================
--- vendor/compiler-rt/dist/cmake/config-ix.cmake	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/cmake/config-ix.cmake	Sat Jan 14 15:38:48 2017	(r312177)
@@ -29,6 +29,7 @@ check_cxx_compiler_flag(-std=c++11      
 check_cxx_compiler_flag(-ftls-model=initial-exec COMPILER_RT_HAS_FTLS_MODEL_INITIAL_EXEC)
 check_cxx_compiler_flag(-fno-lto             COMPILER_RT_HAS_FNO_LTO_FLAG)
 check_cxx_compiler_flag("-Werror -msse3" COMPILER_RT_HAS_MSSE3_FLAG)
+check_cxx_compiler_flag("-Werror -msse4.2"   COMPILER_RT_HAS_MSSE4_2_FLAG)
 check_cxx_compiler_flag(--sysroot=.          COMPILER_RT_HAS_SYSROOT_FLAG)
 
 if(NOT WIN32 AND NOT CYGWIN)
@@ -241,26 +242,26 @@ if(APPLE)
   set(CMAKE_OSX_DEPLOYMENT_TARGET "")
   
   set(DARWIN_COMMON_CFLAGS -stdlib=libc++)
-  set(DARWIN_COMMON_LINKFLAGS
+  set(DARWIN_COMMON_LINK_FLAGS
     -stdlib=libc++
     -lc++
     -lc++abi)
   
   check_linker_flag("-fapplication-extension" COMPILER_RT_HAS_APP_EXTENSION)
   if(COMPILER_RT_HAS_APP_EXTENSION)
-    list(APPEND DARWIN_COMMON_LINKFLAGS "-fapplication-extension")
+    list(APPEND DARWIN_COMMON_LINK_FLAGS "-fapplication-extension")
   endif()
 
   set(DARWIN_osx_CFLAGS
     ${DARWIN_COMMON_CFLAGS}
     -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION})
-  set(DARWIN_osx_LINKFLAGS
-    ${DARWIN_COMMON_LINKFLAGS}
+  set(DARWIN_osx_LINK_FLAGS
+    ${DARWIN_COMMON_LINK_FLAGS}
     -mmacosx-version-min=${SANITIZER_MIN_OSX_VERSION})
 
   if(DARWIN_osx_SYSROOT)
     list(APPEND DARWIN_osx_CFLAGS -isysroot ${DARWIN_osx_SYSROOT})
-    list(APPEND DARWIN_osx_LINKFLAGS -isysroot ${DARWIN_osx_SYSROOT})
+    list(APPEND DARWIN_osx_LINK_FLAGS -isysroot ${DARWIN_osx_SYSROOT})
   endif()
 
   # Figure out which arches to use for each OS
@@ -283,8 +284,8 @@ if(APPLE)
           ${DARWIN_COMMON_CFLAGS}
           ${DARWIN_${platform}_SANITIZER_MIN_VER_FLAG}
           -isysroot ${DARWIN_${platform}sim_SYSROOT})
-        set(DARWIN_${platform}sim_LINKFLAGS
-          ${DARWIN_COMMON_LINKFLAGS}
+        set(DARWIN_${platform}sim_LINK_FLAGS
+          ${DARWIN_COMMON_LINK_FLAGS}
           ${DARWIN_${platform}_SANITIZER_MIN_VER_FLAG}
           -isysroot ${DARWIN_${platform}sim_SYSROOT})
 
@@ -311,8 +312,8 @@ if(APPLE)
           ${DARWIN_COMMON_CFLAGS}
           ${DARWIN_${platform}_SANITIZER_MIN_VER_FLAG}
           -isysroot ${DARWIN_${platform}_SYSROOT})
-        set(DARWIN_${platform}_LINKFLAGS
-          ${DARWIN_COMMON_LINKFLAGS}
+        set(DARWIN_${platform}_LINK_FLAGS
+          ${DARWIN_COMMON_LINK_FLAGS}
           ${DARWIN_${platform}_SANITIZER_MIN_VER_FLAG}
           -isysroot ${DARWIN_${platform}_SYSROOT})
 

Modified: vendor/compiler-rt/dist/lib/asan/CMakeLists.txt
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/CMakeLists.txt	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/asan/CMakeLists.txt	Sat Jan 14 15:38:48 2017	(r312177)
@@ -106,9 +106,9 @@ endif()
 add_compiler_rt_component(asan)
 
 if(APPLE)
-  add_weak_symbols("asan" WEAK_SYMBOL_LINKFLAGS)
-  add_weak_symbols("ubsan" WEAK_SYMBOL_LINKFLAGS)
-  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINKFLAGS)
+  add_weak_symbols("asan" WEAK_SYMBOL_LINK_FLAGS)
+  add_weak_symbols("ubsan" WEAK_SYMBOL_LINK_FLAGS)
+  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
 
   add_compiler_rt_runtime(clang_rt.asan
     SHARED
@@ -121,7 +121,7 @@ if(APPLE)
                 RTLSanCommon
                 RTUbsan
     CFLAGS ${ASAN_DYNAMIC_CFLAGS}
-    LINKFLAGS ${WEAK_SYMBOL_LINKFLAGS}
+    LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS}
     DEFS ${ASAN_DYNAMIC_DEFINITIONS}
     PARENT_TARGET asan)
 else()
@@ -188,7 +188,7 @@ else()
               RTAsan_dynamic_version_script_dummy
               RTUbsan_cxx
       CFLAGS ${ASAN_DYNAMIC_CFLAGS}
-      LINKFLAGS ${ASAN_DYNAMIC_LINK_FLAGS}
+      LINK_FLAGS ${ASAN_DYNAMIC_LINK_FLAGS}
                 ${VERSION_SCRIPT_FLAG}
       LINK_LIBS ${ASAN_DYNAMIC_LIBS}
       DEFS ${ASAN_DYNAMIC_DEFINITIONS}

Modified: vendor/compiler-rt/dist/lib/asan/asan_activation.cc
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/asan_activation.cc	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/asan/asan_activation.cc	Sat Jan 14 15:38:48 2017	(r312177)
@@ -77,12 +77,13 @@ static struct AsanDeactivatedFlags {
 
   void Print() {
     Report(
-        "quarantine_size_mb %d, max_redzone %d, poison_heap %d, "
-        "malloc_context_size %d, alloc_dealloc_mismatch %d, "
-        "allocator_may_return_null %d, coverage %d, coverage_dir %s, "
-        "allocator_release_to_os_interval_ms %d\n",
-        allocator_options.quarantine_size_mb, allocator_options.max_redzone,
-        poison_heap, malloc_context_size,
+        "quarantine_size_mb %d, thread_local_quarantine_size_kb %d, "
+        "max_redzone %d, poison_heap %d, malloc_context_size %d, "
+        "alloc_dealloc_mismatch %d, allocator_may_return_null %d, coverage %d, "
+        "coverage_dir %s, allocator_release_to_os_interval_ms %d\n",
+        allocator_options.quarantine_size_mb,
+        allocator_options.thread_local_quarantine_size_kb,
+        allocator_options.max_redzone, poison_heap, malloc_context_size,
         allocator_options.alloc_dealloc_mismatch,
         allocator_options.may_return_null, coverage, coverage_dir,
         allocator_options.release_to_os_interval_ms);
@@ -109,6 +110,7 @@ void AsanDeactivate() {
 
   AllocatorOptions disabled = asan_deactivated_flags.allocator_options;
   disabled.quarantine_size_mb = 0;
+  disabled.thread_local_quarantine_size_kb = 0;
   disabled.min_redzone = 16;  // Redzone must be at least 16 bytes long.
   disabled.max_redzone = 16;
   disabled.alloc_dealloc_mismatch = false;

Modified: vendor/compiler-rt/dist/lib/asan/asan_activation_flags.inc
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/asan_activation_flags.inc	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/asan/asan_activation_flags.inc	Sat Jan 14 15:38:48 2017	(r312177)
@@ -24,6 +24,7 @@
 ASAN_ACTIVATION_FLAG(int, redzone)
 ASAN_ACTIVATION_FLAG(int, max_redzone)
 ASAN_ACTIVATION_FLAG(int, quarantine_size_mb)
+ASAN_ACTIVATION_FLAG(int, thread_local_quarantine_size_kb)
 ASAN_ACTIVATION_FLAG(bool, alloc_dealloc_mismatch)
 ASAN_ACTIVATION_FLAG(bool, poison_heap)
 

Modified: vendor/compiler-rt/dist/lib/asan/asan_allocator.cc
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/asan_allocator.cc	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/asan/asan_allocator.cc	Sat Jan 14 15:38:48 2017	(r312177)
@@ -269,24 +269,24 @@ struct Allocator {
   }
 
   void RePoisonChunk(uptr chunk) {
-    // This could a user-facing chunk (with redzones), or some internal
+    // This could be a user-facing chunk (with redzones), or some internal
     // housekeeping chunk, like TransferBatch. Start by assuming the former.
     AsanChunk *ac = GetAsanChunk((void *)chunk);
     uptr allocated_size = allocator.GetActuallyAllocatedSize((void *)ac);
     uptr beg = ac->Beg();
     uptr end = ac->Beg() + ac->UsedSize(true);
     uptr chunk_end = chunk + allocated_size;
-    if (chunk < beg && beg < end && end <= chunk_end) {
-      // Looks like a valid AsanChunk. Or maybe not. Be conservative and only
-      // poison the redzones.
+    if (chunk < beg && beg < end && end <= chunk_end &&
+        ac->chunk_state == CHUNK_ALLOCATED) {
+      // Looks like a valid AsanChunk in use, poison redzones only.
       PoisonShadow(chunk, beg - chunk, kAsanHeapLeftRedzoneMagic);
       uptr end_aligned_down = RoundDownTo(end, SHADOW_GRANULARITY);
       FastPoisonShadowPartialRightRedzone(
           end_aligned_down, end - end_aligned_down,
           chunk_end - end_aligned_down, kAsanHeapLeftRedzoneMagic);
     } else {
-      // This can not be an AsanChunk. Poison everything. It may be reused as
-      // AsanChunk later.
+      // This is either not an AsanChunk or freed or quarantined AsanChunk.
+      // In either case, poison everything.
       PoisonShadow(chunk, allocated_size, kAsanHeapLeftRedzoneMagic);
     }
   }

Modified: vendor/compiler-rt/dist/lib/asan/asan_flags.cc
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/asan_flags.cc	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/asan/asan_flags.cc	Sat Jan 14 15:38:48 2017	(r312177)
@@ -169,6 +169,11 @@ void InitializeFlags() {
         (ASAN_LOW_MEMORY) ? 1 << 6 : FIRST_32_SECOND_64(1 << 8, 1 << 10);
     f->thread_local_quarantine_size_kb = kDefaultThreadLocalQuarantineSizeKb;
   }
+  if (f->thread_local_quarantine_size_kb == 0 && f->quarantine_size_mb > 0) {
+    Report("%s: thread_local_quarantine_size_kb can be set to 0 only when "
+           "quarantine_size_mb is set to 0\n", SanitizerToolName);
+    Die();
+  }
   if (!f->replace_str && common_flags()->intercept_strlen) {
     Report("WARNING: strlen interceptor is enabled even though replace_str=0. "
            "Use intercept_strlen=0 to disable it.");

Modified: vendor/compiler-rt/dist/lib/asan/tests/CMakeLists.txt
==============================================================================
--- vendor/compiler-rt/dist/lib/asan/tests/CMakeLists.txt	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/asan/tests/CMakeLists.txt	Sat Jan 14 15:38:48 2017	(r312177)
@@ -36,8 +36,8 @@ append_list_if(COMPILER_RT_HAS_WVARIADIC
 
 # This will ensure the target linker is used
 # during cross compilation
-set(ASAN_UNITTEST_COMMON_LINKFLAGS
-  ${COMPILER_RT_UNITTEST_LINKFLAGS})
+set(ASAN_UNITTEST_COMMON_LINK_FLAGS
+  ${COMPILER_RT_UNITTEST_LINK_FLAGS})
 
 # -gline-tables-only must be enough for ASan, so use it if possible.
 if(COMPILER_RT_TEST_COMPILER_ID MATCHES "Clang")
@@ -48,7 +48,7 @@ endif()
 if(MSVC)
   list(APPEND ASAN_UNITTEST_COMMON_CFLAGS -gcodeview)
 endif()
-list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS -g)
+list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -g)
 
 # Use -D instead of definitions to please custom compile command.
 list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
@@ -58,12 +58,12 @@ list(APPEND ASAN_UNITTEST_COMMON_CFLAGS
 
 if(APPLE)
   list(APPEND ASAN_UNITTEST_COMMON_CFLAGS ${DARWIN_osx_CFLAGS})
-  list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS ${DARWIN_osx_LINKFLAGS})
+  list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS ${DARWIN_osx_LINK_FLAGS})
 
-  add_weak_symbols("asan" WEAK_SYMBOL_LINKFLAGS)
-  add_weak_symbols("ubsan" WEAK_SYMBOL_LINKFLAGS)
-  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINKFLAGS)
-  list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS ${WEAK_SYMBOL_LINKFLAGS})
+  add_weak_symbols("asan" WEAK_SYMBOL_LINK_FLAGS)
+  add_weak_symbols("ubsan" WEAK_SYMBOL_LINK_FLAGS)
+  add_weak_symbols("sanitizer_common" WEAK_SYMBOL_LINK_FLAGS)
+  list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS ${WEAK_SYMBOL_LINK_FLAGS})
 endif()
 
 if(MSVC)
@@ -82,41 +82,41 @@ if(CAN_TARGET_x86_64 OR CAN_TARGET_i386)
 endif()
 
 if(NOT MSVC)
-  list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS --driver-mode=g++)
+  list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS --driver-mode=g++)
 endif()
 
 # x86_64 FreeBSD 9.2 additionally requires libc++ to build the tests.
 if(CMAKE_SYSTEM MATCHES "FreeBSD-9.2-RELEASE")
-  list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS "-lc++")
+  list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS "-lc++")
 endif()
 
 # Unit tests on Mac depend on Foundation.
 if(APPLE)
-  list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS -framework Foundation)
+  list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -framework Foundation)
 endif()
 if(ANDROID)
-  list(APPEND ASAN_UNITTEST_COMMON_LINKFLAGS -pie)
+  list(APPEND ASAN_UNITTEST_COMMON_LINK_FLAGS -pie)
 endif()
 
-set(ASAN_UNITTEST_INSTRUMENTED_LINKFLAGS
-  ${ASAN_UNITTEST_COMMON_LINKFLAGS})
-list(APPEND ASAN_UNITTEST_INSTRUMENTED_LINKFLAGS -fsanitize=address)
+set(ASAN_UNITTEST_INSTRUMENTED_LINK_FLAGS
+  ${ASAN_UNITTEST_COMMON_LINK_FLAGS})
+list(APPEND ASAN_UNITTEST_INSTRUMENTED_LINK_FLAGS -fsanitize=address)
 
-set(ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINKFLAGS
-  ${ASAN_UNITTEST_INSTRUMENTED_LINKFLAGS}
+set(ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINK_FLAGS
+  ${ASAN_UNITTEST_INSTRUMENTED_LINK_FLAGS}
   -shared-libasan)
 
 set(ASAN_UNITTEST_INSTRUMENTED_LIBS)
 # NDK r10 requires -latomic almost always.
 append_list_if(ANDROID atomic ASAN_UNITTEST_INSTRUMENTED_LIBS)
 
-set(ASAN_UNITTEST_NOINST_LINKFLAGS ${ASAN_UNITTEST_COMMON_LINKFLAGS})
+set(ASAN_UNITTEST_NOINST_LINK_FLAGS ${ASAN_UNITTEST_COMMON_LINK_FLAGS})
 if(NOT APPLE)
-  append_list_if(COMPILER_RT_HAS_LIBM -lm ASAN_UNITTEST_NOINST_LINKFLAGS)
-  append_list_if(COMPILER_RT_HAS_LIBDL -ldl ASAN_UNITTEST_NOINST_LINKFLAGS)
-  append_list_if(COMPILER_RT_HAS_LIBRT -lrt ASAN_UNITTEST_NOINST_LINKFLAGS)
-  append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread ASAN_UNITTEST_NOINST_LINKFLAGS)
-  append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINKFLAGS)
+  append_list_if(COMPILER_RT_HAS_LIBM -lm ASAN_UNITTEST_NOINST_LINK_FLAGS)
+  append_list_if(COMPILER_RT_HAS_LIBDL -ldl ASAN_UNITTEST_NOINST_LINK_FLAGS)
+  append_list_if(COMPILER_RT_HAS_LIBRT -lrt ASAN_UNITTEST_NOINST_LINK_FLAGS)
+  append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread ASAN_UNITTEST_NOINST_LINK_FLAGS)
+  append_list_if(COMPILER_RT_HAS_LIBPTHREAD -pthread ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINK_FLAGS)
 endif()
 
 # TODO(eugenis): move all -l flags above to _LIBS?
@@ -148,7 +148,7 @@ endmacro()
 # Link ASan unit test for a given architecture from a set
 # of objects in with given linker flags.
 macro(add_asan_test test_suite test_name arch kind)
-  cmake_parse_arguments(TEST "WITH_TEST_RUNTIME" "" "OBJECTS;LINKFLAGS;SUBDIR" ${ARGN})
+  cmake_parse_arguments(TEST "WITH_TEST_RUNTIME" "" "OBJECTS;LINK_FLAGS;SUBDIR" ${ARGN})
   get_target_flags_for_arch(${arch} TARGET_LINK_FLAGS)
   set(TEST_DEPS ${TEST_OBJECTS})
   if(NOT COMPILER_RT_STANDALONE_BUILD)
@@ -172,7 +172,7 @@ macro(add_asan_test test_suite test_name
                        SUBDIR ${TEST_SUBDIR}
                        OBJECTS ${TEST_OBJECTS}
                        DEPS ${TEST_DEPS}
-                       LINK_FLAGS ${TEST_LINKFLAGS}
+                       LINK_FLAGS ${TEST_LINK_FLAGS}
                                   ${TARGET_LINK_FLAGS})
 endmacro()
 
@@ -237,8 +237,8 @@ macro(add_asan_tests_for_arch_and_kind a
     endforeach()
     # Clang links the static CRT by default. Override that to use the dynamic
     # CRT.
-    set(ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINKFLAGS
-      ${ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINKFLAGS}
+    set(ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINK_FLAGS
+      ${ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINK_FLAGS}
       -Wl,-nodefaultlib:libcmt,-defaultlib:msvcrt,-defaultlib:oldnames)
   else()
     set(ASAN_INST_DYNAMIC_TEST_OBJECTS ${ASAN_INST_TEST_OBJECTS})
@@ -256,7 +256,7 @@ macro(add_asan_tests_for_arch_and_kind a
   add_asan_test(AsanUnitTests "Asan-${arch}${kind}-Test"
                 ${arch} ${kind} SUBDIR "default"
                 OBJECTS ${ASAN_INST_TEST_OBJECTS}
-                LINKFLAGS ${ASAN_UNITTEST_INSTRUMENTED_LINKFLAGS})
+                LINK_FLAGS ${ASAN_UNITTEST_INSTRUMENTED_LINK_FLAGS})
   if(COMPILER_RT_ASAN_HAS_STATIC_RUNTIME)
     # Create the 'dynamic' folder where ASAN tests are produced.
     if(CMAKE_CONFIGURATION_TYPES)
@@ -270,7 +270,7 @@ macro(add_asan_tests_for_arch_and_kind a
     add_asan_test(AsanDynamicUnitTests "Asan-${arch}${kind}-Dynamic-Test"
                   ${arch} ${kind} SUBDIR "dynamic"
                   OBJECTS ${ASAN_INST_DYNAMIC_TEST_OBJECTS}
-                  LINKFLAGS ${ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINKFLAGS})
+                  LINK_FLAGS ${ASAN_DYNAMIC_UNITTEST_INSTRUMENTED_LINK_FLAGS})
   endif()
 
   # Add static ASan runtime that will be linked with uninstrumented tests.
@@ -307,7 +307,7 @@ macro(add_asan_tests_for_arch_and_kind a
   add_asan_test(AsanUnitTests "Asan-${arch}${kind}-Noinst-Test"
                 ${arch} ${kind} SUBDIR "default"
                 OBJECTS ${ASAN_NOINST_TEST_OBJECTS}
-                LINKFLAGS ${ASAN_UNITTEST_NOINST_LINKFLAGS}
+                LINK_FLAGS ${ASAN_UNITTEST_NOINST_LINK_FLAGS}
                 WITH_TEST_RUNTIME)
 
   # Benchmarks.
@@ -319,7 +319,7 @@ macro(add_asan_tests_for_arch_and_kind a
   add_asan_test(AsanBenchmarks "Asan-${arch}${kind}-Benchmark"
                 ${arch} ${kind} SUBDIR "default"
                 OBJECTS ${ASAN_BENCHMARKS_OBJECTS}
-                LINKFLAGS ${ASAN_UNITTEST_INSTRUMENTED_LINKFLAGS})
+                LINK_FLAGS ${ASAN_UNITTEST_INSTRUMENTED_LINK_FLAGS})
 endmacro()
 
 if(COMPILER_RT_CAN_EXECUTE_TESTS AND NOT ANDROID)
@@ -347,7 +347,7 @@ if(ANDROID)
       ${COMPILER_RT_GTEST_SOURCE}
       ${ASAN_NOINST_TEST_SOURCES})
     set_target_compile_flags(AsanNoinstTest ${ASAN_UNITTEST_COMMON_CFLAGS})
-    set_target_link_flags(AsanNoinstTest ${ASAN_UNITTEST_NOINST_LINKFLAGS})
+    set_target_link_flags(AsanNoinstTest ${ASAN_UNITTEST_NOINST_LINK_FLAGS})
     target_link_libraries(AsanNoinstTest ${ASAN_UNITTEST_NOINST_LIBS})
 
     # Test with ASan instrumentation. Link with ASan dynamic runtime.
@@ -355,7 +355,7 @@ if(ANDROID)
       ${COMPILER_RT_GTEST_SOURCE}
       ${ASAN_INST_TEST_SOURCES})
     set_target_compile_flags(AsanTest ${ASAN_UNITTEST_INSTRUMENTED_CFLAGS})
-    set_target_link_flags(AsanTest ${ASAN_UNITTEST_INSTRUMENTED_LINKFLAGS})
+    set_target_link_flags(AsanTest ${ASAN_UNITTEST_INSTRUMENTED_LINK_FLAGS})
     target_link_libraries(AsanTest ${ASAN_UNITTEST_INSTRUMENTED_LIBS})
 
     # Setup correct output directory and link flags.

Modified: vendor/compiler-rt/dist/lib/builtins/arm/adddf3vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/adddf3vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/adddf3vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__adddf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vadd.f64 d0, d0, d1
+#else
 	vmov	d6, r0, r1		// move first param from r0/r1 pair into d6
 	vmov	d7, r2, r3		// move second param from r2/r3 pair into d7
 	vadd.f64 d6, d6, d7		
 	vmov	r0, r1, d6		// move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__adddf3vfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/addsf3vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/addsf3vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/addsf3vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__addsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vadd.f32 s0, s0, s1
+#else
 	vmov	s14, r0		// move first param from r0 into float register
 	vmov	s15, r1		// move second param from r1 into float register
 	vadd.f32 s14, s14, s15
 	vmov	r0, s14		// move result back to r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__addsf3vfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/comparesf2.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/comparesf2.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/comparesf2.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -43,8 +43,14 @@
 .thumb
 #endif
 
-.p2align 2
+@ int __eqsf2(float a, float b)
+
+    .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__eqsf2)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+    vmov r0, s0
+    vmov r1, s1
+#endif
     // Make copies of a and b with the sign bit shifted off the top.  These will
     // be used to detect zeros and NaNs.
 #if __ARM_ARCH_ISA_THUMB == 1
@@ -166,16 +172,23 @@ LOCAL_LABEL(CHECK_NAN):
     JMP(lr)
 #endif
 END_COMPILERRT_FUNCTION(__eqsf2)
+
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__lesf2, __eqsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__ltsf2, __eqsf2)
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__nesf2, __eqsf2)
 
-.p2align 2
+@ int __gtsf2(float a, float b)
+
+    .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtsf2)
     // Identical to the preceding except in that we return -1 for NaN values.
     // Given that the two paths share so much code, one might be tempted to
     // unify them; however, the extra code needed to do so makes the code size
     // to performance tradeoff very hard to justify for such small functions.
+#if defined(COMPILER_RT_ARMHF_TARGET)
+    vmov r0, s0
+    vmov r1, s1
+#endif
 #if __ARM_ARCH_ISA_THUMB == 1
     push    {r6, lr}
     lsls    r2,        r0, #1
@@ -215,6 +228,8 @@ LOCAL_LABEL(CHECK_NAN_2):
 6:
     pop     {r6, pc}
 #else
+    mov     r2,         r0, lsl #1
+    mov     r3,         r1, lsl #1
     orrs    r12,    r2, r3, lsr #1
     it ne
     eorsne  r12,    r0, r1
@@ -233,10 +248,17 @@ LOCAL_LABEL(CHECK_NAN_2):
     JMP(lr)
 #endif
 END_COMPILERRT_FUNCTION(__gtsf2)
+
 DEFINE_COMPILERRT_FUNCTION_ALIAS(__gesf2, __gtsf2)
 
-.p2align 2
+@ int __unordsf2(float a, float b)
+
+    .p2align 2
 DEFINE_COMPILERRT_FUNCTION(__unordsf2)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+    vmov    r0,         s0
+    vmov    r1,         s1
+#endif
     // Return 1 for NaN values, 0 otherwise.
     lsls    r2,         r0, #1
     lsls    r3,         r1, #1
@@ -260,7 +282,15 @@ DEFINE_COMPILERRT_FUNCTION(__unordsf2)
     JMP(lr)
 END_COMPILERRT_FUNCTION(__unordsf2)
 
+#if defined(COMPILER_RT_ARMHF_TARGET)
+DEFINE_COMPILERRT_FUNCTION(__aeabi_fcmpum):
+	vmov s0, r0
+	vmov s1, r1
+	b SYMBOL_NAME(__unordsf2)
+END_COMPILERRT_FUNCTION(__aeabi_fcmpum)
+#else
 DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_fcmpun, __unordsf2)
+#endif
 
 NO_EXEC_STACK_DIRECTIVE
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/divdf3vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/divdf3vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/divdf3vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__divdf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vdiv.f64 d0, d0, d1
+#else
 	vmov	d6, r0, r1		// move first param from r0/r1 pair into d6
 	vmov	d7, r2, r3		// move second param from r2/r3 pair into d7
-	vdiv.f64 d5, d6, d7		
+	vdiv.f64 d5, d6, d7
 	vmov	r0, r1, d5		// move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__divdf3vfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/divsf3vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/divsf3vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/divsf3vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__divsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vdiv.f32 s0, s0, s1
+#else
 	vmov	s14, r0		// move first param from r0 into float register
 	vmov	s15, r1		// move second param from r1 into float register
 	vdiv.f32 s13, s14, s15
 	vmov	r0, s13		// move result back to r0
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__divsf3vfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/eqdf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/eqdf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/eqdf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__eqdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov	d6, r0, r1	// load r0/r1 pair in double register
 	vmov	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7		
+#endif
 	vmrs	apsr_nzcv, fpscr
 	moveq	r0, #1		// set result register to 1 if equal
 	movne	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/eqsf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/eqsf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/eqsf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__eqsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1	    // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	moveq	r0, #1      // set result register to 1 if equal
 	movne	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/extendsfdf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/extendsfdf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/extendsfdf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__extendsfdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.f64.f32 d0, s0
+#else
 	vmov	s15, r0      // load float register from R0
 	vcvt.f64.f32 d7, s15 // convert single to double
 	vmov	r0, r1, d7   // return result in r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__extendsfdf2vfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/fixdfsivfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/fixdfsivfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/fixdfsivfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixdfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.s32.f64 s0, d0
+	vmov r0, s0
+#else
 	vmov	d7, r0, r1    // load double register from R0/R1
 	vcvt.s32.f64 s15, d7  // convert double to 32-bit int into s15
 	vmov	r0, s15	      // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixdfsivfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/fixsfsivfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/fixsfsivfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/fixsfsivfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixsfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.s32.f32 s0, s0
+	vmov r0, s0
+#else
 	vmov	s15, r0        // load float register from R0
 	vcvt.s32.f32 s15, s15  // convert single to 32-bit int into s15
 	vmov	r0, s15	       // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixsfsivfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/fixunsdfsivfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/fixunsdfsivfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/fixunsdfsivfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -20,9 +20,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixunsdfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.u32.f64 s0, d0
+	vmov r0, s0
+#else
 	vmov	d7, r0, r1    // load double register from R0/R1
 	vcvt.u32.f64 s15, d7  // convert double to 32-bit int into s15
 	vmov	r0, s15	      // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixunsdfsivfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/fixunssfsivfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/fixunssfsivfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/fixunssfsivfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -20,9 +20,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__fixunssfsivfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcvt.u32.f32 s0, s0
+	vmov r0, s0
+#else
 	vmov	s15, r0        // load float register from R0
 	vcvt.u32.f32 s15, s15  // convert single to 32-bit unsigned into s15
 	vmov	r0, s15	       // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__fixunssfsivfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/floatsidfvfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/floatsidfvfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/floatsidfvfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatsidfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f64.s32 d0, s0
+#else
 	vmov	s15, r0        // move int to float register s15
 	vcvt.f64.s32 d7, s15   // convert 32-bit int in s15 to double in d7
 	vmov	r0, r1, d7     // move d7 to result register pair r0/r1
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatsidfvfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/floatsisfvfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/floatsisfvfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/floatsisfvfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatsisfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f32.s32 s0, s0
+#else
 	vmov	s15, r0	       // move int to float register s15
 	vcvt.f32.s32 s15, s15  // convert 32-bit int in s15 to float in s15
 	vmov	r0, s15        // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatsisfvfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/floatunssidfvfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/floatunssidfvfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/floatunssidfvfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatunssidfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f64.u32 d0, s0
+#else
 	vmov	s15, r0        // move int to float register s15
 	vcvt.f64.u32 d7, s15   // convert 32-bit int in s15 to double in d7
 	vmov	r0, r1, d7     // move d7 to result register pair r0/r1
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatunssidfvfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/floatunssisfvfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/floatunssisfvfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/floatunssisfvfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__floatunssisfvfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmov s0, r0
+	vcvt.f32.u32 s0, s0
+#else
 	vmov	s15, r0	       // move int to float register s15
 	vcvt.f32.u32 s15, s15  // convert 32-bit int in s15 to float in s15
 	vmov	r0, s15        // move s15 to result register
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__floatunssisfvfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/gedf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/gedf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/gedf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gedf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movge	r0, #1      // set result register to 1 if greater than or equal
 	movlt	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/gesf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/gesf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/gesf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gesf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0	    // move from GPR 0 to float register
 	vmov	s15, r1	    // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movge	r0, #1      // set result register to 1 if greater than or equal
 	movlt	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/gtdf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/gtdf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/gtdf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movgt	r0, #1		// set result register to 1 if equal
 	movle	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/gtsf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/gtsf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/gtsf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__gtsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0		// move from GPR 0 to float register
 	vmov	s15, r1		// move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movgt	r0, #1		// set result register to 1 if equal
 	movle	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/ledf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/ledf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/ledf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__ledf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movls	r0, #1		// set result register to 1 if equal
 	movhi	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/lesf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/lesf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/lesf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__lesf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1     // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movls	r0, #1      // set result register to 1 if equal
 	movhi	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/ltdf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/ltdf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/ltdf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__ltdf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f64 d0, d1
+#else
 	vmov 	d6, r0, r1	// load r0/r1 pair in double register
 	vmov 	d7, r2, r3	// load r2/r3 pair in double register
 	vcmp.f64 d6, d7
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movmi	r0, #1		// set result register to 1 if equal
 	movpl	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/ltsf2vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/ltsf2vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/ltsf2vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -19,9 +19,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__ltsf2vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vcmp.f32 s0, s1
+#else
 	vmov	s14, r0     // move from GPR 0 to float register
 	vmov	s15, r1     // move from GPR 1 to float register
 	vcmp.f32 s14, s15
+#endif
 	vmrs	apsr_nzcv, fpscr
 	movmi	r0, #1      // set result register to 1 if equal
 	movpl	r0, #0

Modified: vendor/compiler-rt/dist/lib/builtins/arm/muldf3vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/muldf3vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/muldf3vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -18,10 +18,14 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__muldf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmul.f64 d0, d0, d1
+#else
 	vmov 	d6, r0, r1         // move first param from r0/r1 pair into d6
 	vmov 	d7, r2, r3         // move second param from r2/r3 pair into d7
-	vmul.f64 d6, d6, d7		
+	vmul.f64 d6, d6, d7
 	vmov 	r0, r1, d6         // move result back to r0/r1 pair
+#endif
 	bx	lr
 END_COMPILERRT_FUNCTION(__muldf3vfp)
 

Modified: vendor/compiler-rt/dist/lib/builtins/arm/mulsf3vfp.S
==============================================================================
--- vendor/compiler-rt/dist/lib/builtins/arm/mulsf3vfp.S	Sat Jan 14 15:38:39 2017	(r312176)
+++ vendor/compiler-rt/dist/lib/builtins/arm/mulsf3vfp.S	Sat Jan 14 15:38:48 2017	(r312177)
@@ -18,9 +18,13 @@
 	.syntax unified
 	.p2align 2
 DEFINE_COMPILERRT_FUNCTION(__mulsf3vfp)
+#if defined(COMPILER_RT_ARMHF_TARGET)
+	vmul.f32 s0, s0, s1
+#else

*** DIFF OUTPUT TRUNCATED AT 1000 LINES ***



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201701141538.v0EFcmsY026830>