<div dir="ltr">Actually, yes, this reproduces on my box exactly the way it fails on the bot: <div><div>cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_PARALLEL_LINK_JOBS=10 -DLLVM_APPEND_VC_REV=OFF -DLLVM_BINUTILS_INCDIR=/usr/include ~/llvm</div></div><div><br></div><div><br></div><div><div>-- Builtin supported architectures: i386;i686;x86_64</div><div>CMake Error at projects/compiler-rt/lib/msan/tests/CMakeLists.txt:88 (msan_compile):</div><div>  msan_compile Macro invoked with incorrect arguments for macro named:</div><div>  msan_compile</div><div>Call Stack (most recent call first):</div><div>  projects/compiler-rt/lib/msan/tests/CMakeLists.txt:134 (add_msan_tests_for_arch)</div><div><br></div><div><br></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 28, 2017 at 1:07 PM, Kostya Serebryany <span dir="ltr"><<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Let me clobber the bot first... </div><div class="HOEnZb"><div class="h5"><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 28, 2017 at 1:05 PM, George Karpenkov <span dir="ltr"><<a href="mailto:ekarpenkov@apple.com" target="_blank">ekarpenkov@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">Kostya, can you reproduce on your machine? I’ve copied the command exactly from buildbot on a fresh checkout, and still could not reproduce.<div>Also just by looking at the source code the number of arguments is clearly matching.<div><div class="m_-2829145454714342099h5"><br><div><blockquote type="cite"><div>On Jul 28, 2017, at 12:53 PM, George Karpenkov via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>> wrote:</div><br class="m_-2829145454714342099m_-7183462960437038178Apple-interchange-newline"><div><div style="word-wrap:break-word">Looking into this, for now can’t reproduce on my linux machine.<br><div><blockquote type="cite"><div>On Jul 28, 2017, at 12:28 PM, Kostya Serebryany <<a href="mailto:kcc@google.com" target="_blank">kcc@google.com</a>> wrote:</div><br class="m_-2829145454714342099m_-7183462960437038178Apple-interchange-newline"><div><div dir="ltr">Looks like this made the sanitizer bot sad: <div><a href="http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux/builds/3107" target="_blank">http://lab.llvm.org:8011/build<wbr>ers/sanitizer-x86_64-linux/<wbr>builds/3107</a><br></div><div><pre style="font-family:'Courier New',courier,monotype,monospace;font-size:inherit"><span class="m_-2829145454714342099m_-7183462960437038178gmail-stdout">-- Builtin supported architectures: i386;i686;x86_64
CMake Error at projects/compiler-rt/lib/msan/<wbr>tests/CMakeLists.txt:88 (msan_compile):
  msan_compile Macro invoked with incorrect arguments for macro named:
  msan_compile
Call Stack (most recent call first):
  projects/compiler-rt/lib/msan/<wbr>tests/CMakeLists.txt:134 (add_msan_tests_for_arch)


-- Linker detection: GNU Gold
-- Linker detection: GNU Gold</span></pre></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jul 28, 2017 at 10:32 AM, George Karpenkov via llvm-commits <span dir="ltr"><<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: george.karpenkov<br>
Date: Fri Jul 28 10:32:37 2017<br>
New Revision: 309405<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=309405&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject?rev=309405&view=rev</a><br>
Log:<br>
[sanitizer tests CMake] Factor out CMake logic for compiling sanitizer tests<br>
<br>
Currently there's a large amount of CMake logic duplication for<br>
compiling sanitizer tests.<br>
If we add more sanitizers, the duplication will get even worse.<br>
<br>
This change factors out common compilation commands into a macro<br>
available to all sanitizers.<br>
<br>
Modified:<br>
    compiler-rt/trunk/cmake/Module<wbr>s/CompilerRTCompile.cmake<br>
    compiler-rt/trunk/lib/asan/tes<wbr>ts/CMakeLists.txt<br>
    compiler-rt/trunk/lib/msan/tes<wbr>ts/CMakeLists.txt<br>
    compiler-rt/trunk/lib/tsan/tes<wbr>ts/CMakeLists.txt<br>
    compiler-rt/trunk/lib/xray/tes<wbr>ts/CMakeLists.txt<br>
<br>
Modified: compiler-rt/trunk/cmake/Module<wbr>s/CompilerRTCompile.cmake<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/cmake/Modules/CompilerRTCompile.cmake?rev=309405&r1=309404&r2=309405&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/compiler-rt/trunk/cmake/<wbr>Modules/CompilerRTCompile.cmak<wbr>e?rev=309405&r1=309404&r2=3094<wbr>05&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/cmake/Module<wbr>s/CompilerRTCompile.cmake (original)<br>
+++ compiler-rt/trunk/cmake/Module<wbr>s/CompilerRTCompile.cmake Fri Jul 28 10:32:37 2017<br>
@@ -24,6 +24,41 @@ function(translate_msvc_cflags out_flags<br>
   set(${out_flags} "${clang_flags}" PARENT_SCOPE)<br>
 endfunction()<br>
<br>
+# Compile a sanitizer test with a freshly built clang<br>
+# for a given architecture, adding the result to the object list.<br>
+#  - obj_list: output list of objects, populated by path<br>
+#              of the generated object file.<br>
+#  - source:   source file of a test.<br>
+#  - arch:     architecture to compile for.<br>
+# sanitizer_test_compile(<obj_li<wbr>st> <source> <arch><br>
+#                        KIND <custom namespace><br>
+#                        COMPILE_DEPS <list of compile-time dependencies><br>
+#                        DEPS <list of dependencies><br>
+#                        CFLAGS <list of flags><br>
+# )<br>
+macro(sanitizer_test_compile obj_list source arch)<br>
+  cmake_parse_arguments(TEST<br>
+      "" "" "KIND;COMPILE_DEPS;DEPS;CFLAGS<wbr>" ${ARGN})<br>
+  get_filename_component(basenam<wbr>e ${source} NAME)<br>
+  if(CMAKE_CONFIGURATION_TYPES)<br>
+    set(output_obj<br>
+      "${CMAKE_CFG_INTDIR}/${obj_lis<wbr>t}.${basename}.${arch}${TEST_K<wbr>IND}.o")<br>
+  else()<br>
+    set(output_obj "${obj_list}.${basename}.${arc<wbr>h}${TEST_KIND}.o")<br>
+  endif()<br>
+<br>
+  # Write out architecture-specific flags into TARGET_CFLAGS variable.<br>
+  get_target_flags_for_arch(${ar<wbr>ch} TARGET_CFLAGS)<br>
+  set(COMPILE_DEPS ${TEST_COMPILE_DEPS})<br>
+  if(NOT COMPILER_RT_STANDALONE_BUILD)<br>
+    list(APPEND COMPILE_DEPS ${TEST_DEPS})<br>
+  endif()<br>
+  clang_compile(${output_obj} ${source}<br>
+                CFLAGS ${TEST_CFLAGS} ${TARGET_CFLAGS}<br>
+                DEPS ${TEST_COMPILE_DEPS})<br>
+  list(APPEND ${obj_list} ${output_obj})<br>
+endmacro()<br>
+<br>
 # Compile a source into an object file with COMPILER_RT_TEST_COMPILER using<br>
 # a provided compile flags and dependenices.<br>
 # clang_compile(<object> <source><br>
<br>
Modified: compiler-rt/trunk/lib/asan/tes<wbr>ts/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/asan/tests/CMakeLists.txt?rev=309405&r1=309404&r2=309405&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/compiler-rt/trunk/lib/as<wbr>an/tests/CMakeLists.txt?rev=30<wbr>9405&r1=309404&r2=309405&view=<wbr>diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/asan/tes<wbr>ts/CMakeLists.txt (original)<br>
+++ compiler-rt/trunk/lib/asan/tes<wbr>ts/CMakeLists.txt Fri Jul 28 10:32:37 2017<br>
@@ -125,20 +125,14 @@ append_list_if(COMPILER_RT_HAS<wbr>_LIBLOG lo<br>
 # NDK r10 requires -latomic almost always.<br>
 append_list_if(ANDROID atomic ASAN_UNITTEST_NOINST_LIBS)<br>
<br>
-# Compile source for the given architecture, using compiler<br>
-# options in ${ARGN}, and add it to the object list.<br>
 macro(asan_compile obj_list source arch kind)<br>
-  get_filename_component(basenam<wbr>e ${source} NAME)<br>
-  set(output_obj "${CMAKE_CFG_RESOLVED_INTDIR}$<wbr>{obj_list}.${basename}.${arch}<wbr>${kind}.o")<br>
-  get_target_flags_for_arch(${ar<wbr>ch} TARGET_CFLAGS)<br>
-  set(COMPILE_DEPS ${ASAN_UNITTEST_HEADERS} ${ASAN_BLACKLIST_FILE})<br>
-  if(NOT COMPILER_RT_STANDALONE_BUILD)<br>
-    list(APPEND COMPILE_DEPS gtest asan)<br>
-  endif()<br>
-  clang_compile(${output_obj} ${source}<br>
-                CFLAGS ${ARGN} ${TARGET_CFLAGS}<br>
-                DEPS ${COMPILE_DEPS})<br>
-  list(APPEND ${obj_list} ${output_obj})<br>
+  cmake_parse_arguments(ASAN_TES<wbr>T "" "" "CFLAGS" ${ARGN})<br>
+  sanitizer_test_compile(${obj_l<wbr>ist} ${source} ${arch}<br>
+    KIND ${kind}<br>
+    COMPILE_DEPS ${ASAN_UNITTEST_HEADERS} ${ASAN_BLACKLIST_FILE}<br>
+    DEPS gtest asan<br>
+    CFLAGS ${ASAN_TEST_CFLAGS}<br>
+  )<br>
 endmacro()<br>
<br>
 # Link ASan unit test for a given architecture from a set<br>
@@ -200,17 +194,17 @@ set(ASAN_BENCHMARKS_SOURCES<br>
   asan_benchmarks_test.cc)<br>
<br>
 # Adds ASan unit tests and benchmarks for architecture.<br>
-macro(add_asan_tests_for_arch<wbr>_and_kind arch kind)<br>
+macro(add_asan_tests_for_arch<wbr>_and_kind arch kind cflags)<br>
   # Instrumented tests.<br>
   set(ASAN_INST_TEST_OBJECTS)<br>
   foreach(src ${ASAN_INST_TEST_SOURCES})<br>
     asan_compile(ASAN_INST_TEST_O<wbr>BJECTS ${src} ${arch} ${kind}<br>
-      ${ASAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} ${ARGN})<br>
+                 CFLAGS ${ASAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} ${cflags})<br>
   endforeach()<br>
   if (APPLE)<br>
     # Add Mac-specific helper.<br>
     asan_compile(ASAN_INST_TEST_O<wbr>BJECTS <a href="http://asan_mac_test_helpers.mm/" rel="noreferrer" target="_blank">asan_mac_test_helpers.mm</a> ${arch} ${kind}<br>
-                 ${ASAN_UNITTEST_INSTRUMENTED_<wbr>CFLAGS} -ObjC ${ARGN})<br>
+                 CFLAGS ${ASAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} -ObjC ${cflags})<br>
   endif()<br>
<br>
   if (MSVC)<br>
@@ -219,7 +213,7 @@ macro(add_asan_tests_for_arch_<wbr>and_kind a<br>
     set(ASAN_INST_DYNAMIC_TEST_OB<wbr>JECTS)<br>
     foreach(src ${ASAN_INST_TEST_SOURCES})<br>
       asan_compile(ASAN_INST_DYNAMI<wbr>C_TEST_OBJECTS ${src} ${arch} ${kind}<br>
-        ${ASAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} -D_MT -D_DLL ${ARGN})<br>
+        CFLAGS ${ASAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} -D_MT -D_DLL ${cflags})<br>
     endforeach()<br>
     # Clang links the static CRT by default. Override that to use the dynamic<br>
     # CRT.<br>
@@ -276,7 +270,7 @@ macro(add_asan_tests_for_arch_<wbr>and_kind a<br>
   set(ASAN_NOINST_TEST_OBJECTS)<br>
   foreach(src ${ASAN_NOINST_TEST_SOURCES})<br>
     asan_compile(ASAN_NOINST_TEST<wbr>_OBJECTS ${src} ${arch} ${kind}<br>
-                 ${ASAN_UNITTEST_COMMON_CFLAGS<wbr>} ${ARGN})<br>
+                CFLAGS ${ASAN_UNITTEST_COMMON_CFLAGS} ${cflags})<br>
   endforeach()<br>
   add_asan_test(AsanUnitTests "Asan-${arch}${kind}-Noinst-Te<wbr>st"<br>
                 ${arch} ${kind} SUBDIR "default"<br>
@@ -288,7 +282,7 @@ macro(add_asan_tests_for_arch_<wbr>and_kind a<br>
   set(ASAN_BENCHMARKS_OBJECTS)<br>
   foreach(src ${ASAN_BENCHMARKS_SOURCES})<br>
     asan_compile(ASAN_BENCHMARKS_<wbr>OBJECTS ${src} ${arch} ${kind}<br>
-                 ${ASAN_UNITTEST_INSTRUMENTED_<wbr>CFLAGS} ${ARGN})<br>
+                CFLAGS ${ASAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} ${cflags})<br>
   endforeach()<br>
   add_asan_test(AsanBenchmarks "Asan-${arch}${kind}-Benchmark<wbr>"<br>
                 ${arch} ${kind} SUBDIR "default"<br>
@@ -302,9 +296,9 @@ if(COMPILER_RT_CAN_EXECUTE_TES<wbr>TS AND NOT<br>
     darwin_filter_host_archs(ASAN<wbr>_SUPPORTED_ARCH ASAN_TEST_ARCH)<br>
   endif()<br>
   foreach(arch ${ASAN_TEST_ARCH})<br>
-    add_asan_tests_for_arch_and_ki<wbr>nd(${arch} "-inline")<br>
+    add_asan_tests_for_arch_and_ki<wbr>nd(${arch} "-inline" "")<br>
     add_asan_tests_for_arch_and_k<wbr>ind(${arch} "-with-calls"<br>
-      -mllvm -asan-instrumentation-with-cal<wbr>l-threshold=0)<br>
+      "-mllvm;-asan-instrumentation-<wbr>with-call-threshold=0")<br>
   endforeach()<br>
 endif()<br>
<br>
<br>
Modified: compiler-rt/trunk/lib/msan/tes<wbr>ts/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/msan/tests/CMakeLists.txt?rev=309405&r1=309404&r2=309405&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/compiler-rt/trunk/lib/ms<wbr>an/tests/CMakeLists.txt?rev=30<wbr>9405&r1=309404&r2=309405&view=<wbr>diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/msan/tes<wbr>ts/CMakeLists.txt (original)<br>
+++ compiler-rt/trunk/lib/msan/tes<wbr>ts/CMakeLists.txt Fri Jul 28 10:32:37 2017<br>
@@ -53,20 +53,14 @@ set(MSAN_UNITTEST_LINK_FLAGS<br>
<br>
 append_list_if(COMPILER_RT_HA<wbr>S_LIBDL -ldl MSAN_UNITTEST_LINK_FLAGS)<br>
<br>
-# Compile source for the given architecture, using compiler<br>
-# options in ${ARGN}, and add it to the object list.<br>
-macro(msan_compile obj_list source arch kind)<br>
-  get_filename_component(basenam<wbr>e ${source} NAME)<br>
-  set(output_obj "${basename}.${arch}${kind}.o"<wbr>)<br>
-  get_target_flags_for_arch(${ar<wbr>ch} TARGET_CFLAGS)<br>
-  set(COMPILE_DEPS ${MSAN_UNITTEST_HEADERS})<br>
-  if(NOT COMPILER_RT_STANDALONE_BUILD)<br>
-    list(APPEND COMPILE_DEPS gtest msan)<br>
-  endif()<br>
-  clang_compile(${output_obj} ${source}<br>
-                CFLAGS ${ARGN} ${TARGET_CFLAGS}<br>
-                DEPS ${COMPILE_DEPS})<br>
-  list(APPEND ${obj_list} ${output_obj})<br>
+macro(msan_compile obj_list source arch kind cflags)<br>
+  sanitizer_test_compile(<br>
+    ${obj_list} ${source} ${arch}<br>
+    KIND ${kind}<br>
+    COMPILE_DEPS ${MSAN_UNITTEST_HEADERS}<br>
+    DEPS gtest msan<br>
+    CFLAGS ${MSAN_UNITTEST_INSTRUMENTED_C<wbr>FLAGS} ${cflags}<br>
+  )<br>
 endmacro()<br>
<br>
 macro(msan_link_shared so_list so_name arch kind)<br>
@@ -88,23 +82,22 @@ add_custom_target(MsanUnitTest<wbr>s)<br>
 set_target_properties(MsanUni<wbr>tTests PROPERTIES FOLDER "MSan unit tests")<br>
<br>
 # Adds MSan unit tests and benchmarks for architecture.<br>
-macro(add_msan_tests_for_arch arch kind)<br>
+macro(add_msan_tests_for_arch arch kind cflags)<br>
   # Build gtest instrumented with MSan.<br>
   set(MSAN_INST_GTEST)<br>
-  msan_compile(MSAN_INST_GTEST ${COMPILER_RT_GTEST_SOURCE} ${arch} "${kind}"<br>
-                               ${MSAN_UNITTEST_INSTRUMENTED_<wbr>CFLAGS} ${ARGN})<br>
+  msan_compile(MSAN_INST_GTEST ${COMPILER_RT_GTEST_SOURCE} ${arch} ${kind}<br>
+                               "${cflags}")<br>
<br>
   # Instrumented tests.<br>
   set(MSAN_INST_TEST_OBJECTS)<br>
   foreach (SOURCE ${MSAN_UNITTEST_SOURCES})<br>
-    msan_compile(MSAN_INST_TEST_OB<wbr>JECTS ${SOURCE} ${arch} "${kind}"<br>
-                 ${MSAN_UNITTEST_INSTRUMENTED_<wbr>CFLAGS} ${ARGN})<br>
+    msan_compile(MSAN_INST_TEST_OB<wbr>JECTS ${SOURCE} ${arch} "${kind}" "${cflags}")<br>
   endforeach(SOURCE)<br>
<br>
   # Instrumented loadable module objects.<br>
   set(MSAN_INST_LOADABLE_OBJECT<wbr>S)<br>
   msan_compile(MSAN_INST_LOADAB<wbr>LE_OBJECTS ${MSAN_LOADABLE_SOURCE} ${arch} "${kind}"<br>
-               ${MSAN_UNITTEST_INSTRUMENTED_<wbr>CFLAGS} "-fPIC" ${ARGN})<br>
+               "-fPIC;${cflags}")<br>
<br>
   # Instrumented loadable library tests.<br>
   set(MSAN_LOADABLE_SO)<br>
@@ -138,8 +131,8 @@ if(COMPILER_RT_CAN_EXECUTE_TES<wbr>TS AND COM<br>
       CFLAGS ${MSAN_LIBCXX_CFLAGS} ${TARGET_CFLAGS})<br>
     set(MSAN_LIBCXX_SO ${LIBCXX_PREFIX}/lib/libc++.so<wbr>)<br>
<br>
-    add_msan_tests_for_arch(${arch<wbr>} "")<br>
+    add_msan_tests_for_arch(${arch<wbr>} "" "")<br>
     add_msan_tests_for_arch(${arc<wbr>h} "-with-call"<br>
-                            -mllvm -msan-instrumentation-with-cal<wbr>l-threshold=0)<br>
+                            "-mllvm;-msan-instrumentation-<wbr>with-call-threshold=0")<br>
   endforeach()<br>
 endif()<br>
<br>
Modified: compiler-rt/trunk/lib/tsan/tes<wbr>ts/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/tsan/tests/CMakeLists.txt?rev=309405&r1=309404&r2=309405&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/compiler-rt/trunk/lib/ts<wbr>an/tests/CMakeLists.txt?rev=30<wbr>9405&r1=309404&r2=309405&view=<wbr>diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/tsan/tes<wbr>ts/CMakeLists.txt (original)<br>
+++ compiler-rt/trunk/lib/tsan/tes<wbr>ts/CMakeLists.txt Fri Jul 28 10:32:37 2017<br>
@@ -23,21 +23,6 @@ foreach (header ${TSAN_HEADERS})<br>
   list(APPEND TSAN_RTL_HEADERS ${CMAKE_CURRENT_SOURCE_DIR}/..<wbr>/${header})<br>
 endforeach()<br>
<br>
-# tsan_compile(obj_list, source, arch, {headers})<br>
-macro(tsan_compile obj_list source arch)<br>
-  get_filename_component(basenam<wbr>e ${source} NAME)<br>
-  set(output_obj "${basename}.${arch}.o")<br>
-  get_target_flags_for_arch(${ar<wbr>ch} TARGET_CFLAGS)<br>
-  set(COMPILE_DEPS ${TSAN_RTL_HEADERS} ${ARGN})<br>
-  if(NOT COMPILER_RT_STANDALONE_BUILD)<br>
-    list(APPEND COMPILE_DEPS gtest tsan)<br>
-  endif()<br>
-  clang_compile(${output_obj} ${source}<br>
-          CFLAGS ${TSAN_UNITTEST_CFLAGS} ${TARGET_CFLAGS}<br>
-          DEPS ${COMPILE_DEPS})<br>
-  list(APPEND ${obj_list} ${output_obj})<br>
-endmacro()<br>
-<br>
 macro(add_tsan_unittest testname)<br>
   set(TSAN_TEST_ARCH ${TSAN_SUPPORTED_ARCH})<br>
   if(APPLE)<br>
@@ -48,7 +33,12 @@ macro(add_tsan_unittest testname)<br>
       cmake_parse_arguments(TEST "" "" "SOURCES;HEADERS" ${ARGN})<br>
       set(TEST_OBJECTS)<br>
       foreach(SOURCE ${TEST_SOURCES} ${COMPILER_RT_GTEST_SOURCE})<br>
-        tsan_compile(TEST_OBJECTS ${SOURCE} ${arch} ${TEST_HEADERS})<br>
+        sanitizer_test_compile(<br>
+          TEST_OBJECTS ${SOURCE} ${arch}<br>
+          COMPILE_DEPS ${TSAN_RTL_HEADERS} ${TEST_HEADERS}<br>
+          DEPS gtest tsan<br>
+          CFLAGS ${TSAN_UNITTEST_CFLAGS}<br>
+          )<br>
       endforeach()<br>
       get_target_flags_for_arch(${a<wbr>rch} TARGET_LINK_FLAGS)<br>
       set(TEST_DEPS ${TEST_OBJECTS})<br>
<br>
Modified: compiler-rt/trunk/lib/xray/tes<wbr>ts/CMakeLists.txt<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/compiler-rt/trunk/lib/xray/tests/CMakeLists.txt?rev=309405&r1=309404&r2=309405&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-pr<wbr>oject/compiler-rt/trunk/lib/xr<wbr>ay/tests/CMakeLists.txt?rev=30<wbr>9405&r1=309404&r2=309405&view=<wbr>diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- compiler-rt/trunk/lib/xray/tes<wbr>ts/CMakeLists.txt (original)<br>
+++ compiler-rt/trunk/lib/xray/tes<wbr>ts/CMakeLists.txt Fri Jul 28 10:32:37 2017<br>
@@ -11,19 +11,6 @@ set(XRAY_UNITTEST_CFLAGS<br>
   -I${COMPILER_RT_SOURCE_DIR}/l<wbr>ib/xray<br>
   -I${COMPILER_RT_SOURCE_DIR}/l<wbr>ib)<br>
<br>
-macro(xray_compile obj_list source arch)<br>
-  get_filename_component(basenam<wbr>e ${source} NAME)<br>
-  set(output_obj "${basename}.${arch}.o")<br>
-  get_target_flags_for_arch(${ar<wbr>ch} TARGET_CFLAGS)<br>
-  if(NOT COMPILER_RT_STANDALONE_BUILD)<br>
-    list(APPEND COMPILE_DEPS gtest_main xray)<br>
-  endif()<br>
-  clang_compile(${output_obj} ${source}<br>
-    CFLAGS ${XRAY_UNITTEST_CFLAGS} ${TARGET_CFLAGS}<br>
-    DEPS ${COMPILE_DEPS})<br>
-  list(APPEND ${obj_list} ${output_obj})<br>
-endmacro()<br>
-<br>
 macro(add_xray_unittest testname)<br>
   set(XRAY_TEST_ARCH ${XRAY_SUPPORTED_ARCH})<br>
   if (APPLE)<br>
@@ -34,7 +21,9 @@ macro(add_xray_unittest testname)<br>
       cmake_parse_arguments(TEST "" "" "SOURCES;HEADERS" ${ARGN})<br>
       set(TEST_OBJECTS)<br>
       foreach(SOURCE ${TEST_SOURCES} ${COMPILER_RT_GTEST_SOURCE})<br>
-        xray_compile(TEST_OBJECTS ${SOURCE} ${arch} ${TEST_HEADERS})<br>
+        sanitizer_test_compile(TEST_OB<wbr>JECTS ${SOURCE} ${arch}<br>
+                               DEPS gtest_main xray<br>
+                               CFLAGS ${XRAY_UNITTEST_CFLAGS})<br>
       endforeach()<br>
       get_target_flags_for_arch(${a<wbr>rch} TARGET_LINK_FLAGS)<br>
       set(TEST_DEPS ${TEST_OBJECTS})<br>
<br>
<br>
______________________________<wbr>_________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br></div>
</div></blockquote></div><br></div>______________________________<wbr>_________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-commits</a><br></div></blockquote></div><br></div></div></div></div></blockquote></div><br></div>
</div></div></blockquote></div><br></div>