[zorg] r346890 - Attempt to add check-cxx-benchmarks rule for libc++

Eric Fiselier via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 14 12:46:51 PST 2018


Author: ericwf
Date: Wed Nov 14 12:46:51 2018
New Revision: 346890

URL: http://llvm.org/viewvc/llvm-project?rev=346890&view=rev
Log:
Attempt to add check-cxx-benchmarks rule for libc++

This patch attempts to make certain libc++ builders run the benchmarks
using the newly added libc++ LIT based benchmark targets.

Modified:
    zorg/trunk/buildbot/osuosl/master/config/builders.py
    zorg/trunk/zorg/buildbot/builders/LibcxxAndAbiBuilder.py

Modified: zorg/trunk/buildbot/osuosl/master/config/builders.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/buildbot/osuosl/master/config/builders.py?rev=346890&r1=346889&r2=346890&view=diff
==============================================================================
--- zorg/trunk/buildbot/osuosl/master/config/builders.py (original)
+++ zorg/trunk/buildbot/osuosl/master/config/builders.py Wed Nov 14 12:46:51 2018
@@ -1306,6 +1306,8 @@ def _get_libcxx_builders():
         'libcxx-cloud1', 'libcxx-cloud2', 'libcxx-cloud3', 'libcxx-cloud4',
         'libcxx-cloud5'
     ]
+    benchmark_opts = ';'.join(
+        ['--benchmark_min_time=0.01', '--benchmark_color=false'])
     return [
         # gribozavr's builders on gribozavr4
         {'name': 'libcxx-libcxxabi-x86_64-linux-debian',
@@ -1383,8 +1385,10 @@ def _get_libcxx_builders():
          'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                  'CC': 'clang', 'CXX': 'clang++'},
+            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
             lit_extra_opts={'std': 'c++17', 'enable_warnings': 'true'},
-            check_libcxx_abilist=True),
+            check_libcxx_abilist=True,
+            check_libcxx_benchmarks=True),
         'category': 'libcxx'},
 
         {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-cxx2a',
@@ -1393,8 +1397,10 @@ def _get_libcxx_builders():
          'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                  'CC': 'clang', 'CXX': 'clang++'},
+            cmake_extra_opts={'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
             lit_extra_opts={'std': 'c++2a', 'enable_warnings': 'true'},
-            check_libcxx_abilist=True),
+            check_libcxx_abilist=True,
+            check_libcxx_benchmarks=True),
         'category': 'libcxx'},
 
         {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-32bit',
@@ -1414,7 +1420,9 @@ def _get_libcxx_builders():
          'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                  'CC': 'clang', 'CXX': 'clang++'},
-            cmake_extra_opts={'LLVM_USE_SANITIZER': 'Address'}),
+            cmake_extra_opts={'LLVM_USE_SANITIZER': 'Address',
+                              'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
+            check_libcxx_benchmarks=True),
         'category': 'libcxx'},
 
         {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-ubsan',
@@ -1424,17 +1432,20 @@ def _get_libcxx_builders():
             env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                  'CC': 'clang', 'CXX': 'clang++'},
             cmake_extra_opts={'LLVM_USE_SANITIZER': 'Undefined',
-                              'LIBCXX_ABI_UNSTABLE': 'ON'}),
+                              'LIBCXX_ABI_UNSTABLE': 'ON',
+                              'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
+            check_libcxx_benchmarks=True),
         'category': 'libcxx'},
 
-        # EricWF's builders on ericwf-buildslave2
         {'name': 'libcxx-libcxxabi-x86_64-linux-ubuntu-msan',
          'slavenames': ericwf_slaves + docker_slaves,
          'builddir' : 'libcxx-libcxxabi-x86_64-linux-ubuntu-msan',
          'factory': LibcxxAndAbiBuilder.getLibcxxAndAbiBuilder(
             env={'PATH': '/usr/local/bin:/usr/bin:/bin',
                  'CC': 'clang', 'CXX': 'clang++'},
-            cmake_extra_opts={'LLVM_USE_SANITIZER': 'MemoryWithOrigins'}),
+            cmake_extra_opts={'LLVM_USE_SANITIZER': 'MemoryWithOrigins',
+                              'LIBCXX_BENCHMARK_TEST_ARGS': benchmark_opts},
+            check_libcxx_benchmarks=True),
         'category': 'libcxx'},
 
         {'name': 'libcxx-libcxxabi-libunwind-x86_64-linux-ubuntu',

Modified: zorg/trunk/zorg/buildbot/builders/LibcxxAndAbiBuilder.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/zorg/buildbot/builders/LibcxxAndAbiBuilder.py?rev=346890&r1=346889&r2=346890&view=diff
==============================================================================
--- zorg/trunk/zorg/buildbot/builders/LibcxxAndAbiBuilder.py (original)
+++ zorg/trunk/zorg/buildbot/builders/LibcxxAndAbiBuilder.py Wed Nov 14 12:46:51 2018
@@ -54,7 +54,8 @@ def getLibcxxWholeTree(f, src_root):
 
 def getLibcxxAndAbiBuilder(f=None, env={}, additional_features=set(),
                            cmake_extra_opts={}, lit_extra_opts={},
-                           lit_extra_args=[], check_libcxx_abilist=False):
+                           lit_extra_args=[], check_libcxx_abilist=False,
+                           check_libcxx_benchmarks=False):
     if f is None:
         f = buildbot.process.factory.BuildFactory()
 
@@ -140,4 +141,19 @@ def getLibcxxAndAbiBuilder(f=None, env={
         descriptionDone = ['test', 'libcxx', 'abi'],
         workdir         = build_path))
 
+    if check_libcxx_benchmarks:
+      # Build the libc++ benchmarks
+      f.addStep(buildbot.steps.shell.ShellCommand(
+          name='build.libcxx.benchmarks',
+          command=['make', jobs_flag, 'cxx-benchmarks'],
+          haltOnFailure=True, workdir=build_path))
+
+      # Run the benchmarks
+      f.addStep(LitTestCommand(
+          name            = 'test.libcxx.benchmarks',
+          command         = ['make', jobs_flag, 'check-cxx-benchmarks'],
+          description     = ['testing', 'libcxx', 'benchmarks'],
+          descriptionDone = ['test', 'libcxx', 'benchmarks'],
+          workdir         = build_path))
+
     return f




More information about the llvm-commits mailing list