[LNT] r249026 - Add support for storing hash of test binaries.

Kristof Beyls via llvm-commits llvm-commits at lists.llvm.org
Thu Oct 1 09:06:13 PDT 2015


Author: kbeyls
Date: Thu Oct  1 11:06:12 2015
New Revision: 249026

URL: http://llvm.org/viewvc/llvm-project?rev=249026&view=rev
Log:
Add support for storing hash of test binaries.

This commit adds support for storing hashes of the test binaries as a new
sample type. The idea is that when the hash function of the same test is the
same as on a previous run, the analyses can assume that the binary didn't
change in a meaningful way.

None of the analyses in LNT have been adapted yet to take advantage of this
extra information.

The hash value is stored as a new sample type.  Since the hash value in many
cases should not be handled the same as other sample types, like execution time
or compilation time, a distinction needs to be made. This patch changes
terminology in LNT and calls sample types that have a meaningful order, like
execution time and compilation time, "metric fields". The hash function of a
binary - as one hash value cannot be said to be "better" than another hash
value - is not considered a "metric field".

Care has been taken to make sure LNT can keep on working with test-suite
versions that don't produce the hash values yet, which was introduced in
r246035.

Differential Revision: http://reviews.llvm.org/D11231


Modified:
    lnt/trunk/lnt/server/db/fieldchange.py
    lnt/trunk/lnt/server/db/testsuitedb.py
    lnt/trunk/lnt/server/db/v4db.py
    lnt/trunk/lnt/server/reporting/analysis.py
    lnt/trunk/lnt/server/reporting/dailyreport.py
    lnt/trunk/lnt/server/reporting/runs.py
    lnt/trunk/lnt/server/reporting/summaryreport.py
    lnt/trunk/lnt/server/ui/templates/reporting/runs.html
    lnt/trunk/lnt/server/ui/templates/v4_run.html
    lnt/trunk/lnt/server/ui/views.py
    lnt/trunk/lnt/testing/__init__.py
    lnt/trunk/lnt/tests/nt.py
    lnt/trunk/tests/runtest/Inputs/rerun-test-suite1/fake-report.simple.csv
    lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/ms_struct_pack_layout-1.simple.report.txt
    lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/vla.simple.report.txt
    lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/TEST.simple.report
    lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/fake-report.simple.csv
    lnt/trunk/tests/runtest/Inputs/test-suite/fake-report.simple.csv
    lnt/trunk/tests/runtest/nt.py

Modified: lnt/trunk/lnt/server/db/fieldchange.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/db/fieldchange.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/db/fieldchange.py (original)
+++ lnt/trunk/lnt/server/db/fieldchange.py Thu Oct  1 11:06:12 2015
@@ -37,8 +37,10 @@ def regenerate_fieldchanges_for_run(ts,
                 "That will be very slow.".format(run_size))
 
     runinfo = lnt.server.reporting.analysis.RunInfo(ts, runs_to_load)
-        
-    for field in list(ts.sample_fields):
+
+    # Only store fieldchanges for "metric" samples like execution time;
+    # not for fields with other data, e.g. hash of a binary
+    for field in list(ts.Sample.get_metric_fields()):
         for test_id in runinfo.test_ids:
             result = runinfo.get_comparison_result(runs, previous_runs,
                                                    test_id, field)

Modified: lnt/trunk/lnt/server/db/testsuitedb.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/db/testsuitedb.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/db/testsuitedb.py (original)
+++ lnt/trunk/lnt/server/db/testsuitedb.py Thu Oct  1 11:06:12 2015
@@ -330,8 +330,21 @@ class TestSuiteDB(object):
                     if field not in status_fields:
                         yield field
 
-            # Dynamically create fields for all of the test suite defined sample
-            # fields.
+            @staticmethod
+            def get_metric_fields():
+                """
+                get_metric_fields() -> [SampleField*]
+
+                Get the sample fields which represent some kind of metric, i.e.
+                those which have a value that can be interpreted as better or
+                worse than other potential values for this field.
+                """
+                for field in self.Sample.fields:
+                    if field.type.name == 'Real':
+                        yield field
+
+            # Dynamically create fields for all of the test suite defined
+            # sample fields.
             #
             # FIXME: We might want to index some of these, but for a different
             # reason than above. It is possible worth it to turn the compound
@@ -348,6 +361,8 @@ class TestSuiteDB(object):
                 elif item.type.name == 'Status':
                     item.column = Column(item.name, Integer, ForeignKey(
                             testsuite.StatusKind.id))
+                elif item.type.name == 'Hash':
+                    item.column = Column(item.name, String)
                 else:
                     raise ValueError,(
                         "test suite defines unknown sample type %r" (

Modified: lnt/trunk/lnt/server/db/v4db.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/db/v4db.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/db/v4db.py (original)
+++ lnt/trunk/lnt/server/db/v4db.py Thu Oct  1 11:06:12 2015
@@ -118,10 +118,13 @@ class V4DB(object):
 
         # Resolve or create the known sample types.
         self.real_sample_type = self.query(testsuite.SampleType)\
-            .filter_by(name = "Real").first()
+            .filter_by(name="Real").first()
         self.status_sample_type = self.query(testsuite.SampleType)\
-            .filter_by(name = "Status").first()
-        assert (self.real_sample_type and self.status_sample_type), \
+            .filter_by(name="Status").first()
+        self.hash_sample_type = self.query(testsuite.SampleType)\
+            .filter_by(name="Hash").first()
+        assert (self.real_sample_type and self.status_sample_type and
+                self.hash_sample_type), \
             "sample types not initialized!"
 
     def close(self):

Modified: lnt/trunk/lnt/server/reporting/analysis.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/reporting/analysis.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/reporting/analysis.py (original)
+++ lnt/trunk/lnt/server/reporting/analysis.py Thu Oct  1 11:06:12 2015
@@ -143,8 +143,12 @@ class ComparisonResult:
             else:
                 return UNCHANGED_PASS
 
+    # FIXME: take into account hash of binary - if available. If the hash is
+    # the same, the binary is the same and therefore the difference cannot be
+    # significant - for execution time. It can be significant for compile time.
     def get_value_status(self, confidence_interval=2.576,
-                         value_precision=MIN_VALUE_PRECISION, ignore_small=True):
+                         value_precision=MIN_VALUE_PRECISION,
+                         ignore_small=True):
         if self.current is None or self.previous is None:
             return None
 

Modified: lnt/trunk/lnt/server/reporting/dailyreport.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/reporting/dailyreport.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/reporting/dailyreport.py (original)
+++ lnt/trunk/lnt/server/reporting/dailyreport.py Thu Oct  1 11:06:12 2015
@@ -74,7 +74,7 @@ class DailyReport(object):
         self.year = year
         self.month = month
         self.day = day
-        self.fields = list(ts.Sample.get_primary_fields())
+        self.fields = list(ts.Sample.get_metric_fields())
         self.day_start_offset = datetime.timedelta(
             hours=day_start_offset_hours)
         self.for_mail = for_mail
@@ -218,7 +218,7 @@ class DailyReport(object):
         #       discretion in determining whether or not a particular result is
         #       worth considering (as opposed to noise).
         #
-        # The idea is as follows, for each (machine, test, primary_field),
+        # The idea is as follows, for each (machine, test, metric_field),
         # classify the result into one of REGRESSED, IMPROVED, UNCHANGED_FAIL,
         # ADDED, REMOVED, PERFORMANCE_REGRESSED, PERFORMANCE_IMPROVED.
         #

Modified: lnt/trunk/lnt/server/reporting/runs.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/reporting/runs.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/reporting/runs.py (original)
+++ lnt/trunk/lnt/server/reporting/runs.py Thu Oct  1 11:06:12 2015
@@ -66,23 +66,23 @@ def generate_run_report(run, baseurl, on
     sri = lnt.server.reporting.analysis.RunInfo(
         ts, runs_to_load, aggregation_fn, confidence_lv)
 
-    # Get the test names, primary fields and total test counts.
+    # Get the test names, metric fields and total test counts.
     test_names = ts.query(ts.Test.name, ts.Test.id).\
         order_by(ts.Test.name).\
         filter(ts.Test.id.in_(sri.test_ids)).all()
-    primary_fields = list(ts.Sample.get_primary_fields())
-    num_total_tests = len(primary_fields) * len(test_names)
+    metric_fields = list(ts.Sample.get_metric_fields())
+    num_total_tests = len(metric_fields) * len(test_names)
 
     # Gather the run-over-run changes to report, organized by field and then
     # collated by change type.
     run_to_run_info, test_results = _get_changes_by_type(
-        run, compare_to, primary_fields, test_names, num_comparison_runs, sri)
+        run, compare_to, metric_fields, test_names, num_comparison_runs, sri)
 
     # If we have a baseline, gather the run-over-baseline results and
     # changes.
     if baseline:
         run_to_baseline_info, baselined_results = _get_changes_by_type(
-            run, baseline, primary_fields, test_names, num_comparison_runs, sri)
+            run, baseline, metric_fields, test_names, num_comparison_runs, sri)
     else:
         run_to_baseline_info = baselined_results = None
 
@@ -222,11 +222,12 @@ def generate_run_report(run, baseurl, on
 
     return subject, text_report, html_report, sri
 
-def _get_changes_by_type(run_a, run_b, primary_fields, test_names,
+
+def _get_changes_by_type(run_a, run_b, metric_fields, test_names,
                          num_comparison_runs, sri):
     comparison_results = {}
     results_by_type = []
-    for field in primary_fields:
+    for field in metric_fields:
         new_failures = []
         new_passes = []
         perf_regressions = []

Modified: lnt/trunk/lnt/server/reporting/summaryreport.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/reporting/summaryreport.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/reporting/summaryreport.py (original)
+++ lnt/trunk/lnt/server/reporting/summaryreport.py Thu Oct  1 11:06:12 2015
@@ -206,7 +206,7 @@ class SummaryReport(object):
                 build_mode = 'Release'
 
             # Return a datapoint for each passing field.
-            for field_name,field,status_field in ts_sample_primary_fields:
+            for field_name, field, status_field in ts_sample_metric_fields:
                 # Ignore failing samples.
                 if status_field and \
                         sample[2 + status_field.index] == lnt.testing.FAIL:
@@ -276,7 +276,7 @@ class SummaryReport(object):
             metric = 'Compile Time'
 
             # Report the user and wall time.
-            for field_name,field,status_field in ts_sample_primary_fields:
+            for field_name, field, status_field in ts_sample_metric_fields:
                 if field_name not in ('user_time', 'wall_time'):
                     continue
 
@@ -303,15 +303,15 @@ class SummaryReport(object):
                 return get_compile_datapoints_for_sample(ts, sample)
 
         # For each column...
-        for index,runs in enumerate(self.runs_at_index):
+        for index, runs in enumerate(self.runs_at_index):
             # For each test suite and run list...
-            for ts,(ts_runs,_) in zip(self.testsuites, runs):
+            for ts, (ts_runs, _) in zip(self.testsuites, runs):
                 ts_tests = self.tests[ts]
 
-                # Compute the primary sample fields.
-                ts_sample_primary_fields = [
+                # Compute the metric fields.
+                ts_sample_metric_fields = [
                     (f.name, f, f.status_field)
-                    for f in ts.Sample.get_primary_fields()]
+                    for f in ts.Sample.get_metric_fields()]
 
                 # Compute a mapping from run id to run.
                 run_id_map = dict((r.id, r)

Modified: lnt/trunk/lnt/server/ui/templates/reporting/runs.html
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/templates/reporting/runs.html?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/templates/reporting/runs.html (original)
+++ lnt/trunk/lnt/server/ui/templates/reporting/runs.html Thu Oct  1 11:06:12 2015
@@ -7,7 +7,7 @@
 {%
   macro add_report_changes_detail_for_field_and_bucket(
     field, show_perf, run_url, field_index, field_display_name, bucket_name, bucket, test_names,
-    primary_name, primary_field_suffix, secondary_field_suffix, secondary_info, styles
+    metric_name, metric_field_suffix, secondary_field_suffix, secondary_info, styles
   )
 %}
 
@@ -24,10 +24,10 @@
          {% endfor %}
          </tbody>
        {% else %}
-         <th style="{{ styles['th'] }}">Δ {{ primary_field_suffix }}</th>
-         <th style="{{ styles['th'] }}">{{ primary_name }}</th>
+         <th style="{{ styles['th'] }}">Δ {{ metric_field_suffix }}</th>
+         <th style="{{ styles['th'] }}">{{ metric_name }}</th>
          <th style="{{ styles['th'] }}">Current</th>
-         <th style="{{ styles['th'] }}">σ {{ primary_field_suffix }}</th>
+         <th style="{{ styles['th'] }}">σ {{ metric_field_suffix }}</th>
          {% if secondary_info %}
          <th style="{{ styles['th'] }}">Δ {{ secondary_field_suffix }}</th>
          <th style="{{ styles['th'] }}">σ {{ secondary_field_suffix }}</th>

Modified: lnt/trunk/lnt/server/ui/templates/v4_run.html
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/templates/v4_run.html?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/templates/v4_run.html (original)
+++ lnt/trunk/lnt/server/ui/templates/v4_run.html Thu Oct  1 11:06:12 2015
@@ -93,7 +93,7 @@
     <li><a href="#run_info"><i class="icon-chevron-right"></i>Run Info</a></li>
     <li><a href="#view_options"><i class="icon-chevron-right"></i>View Options</a></li>
     <li><a href="#report"><i class="icon-chevron-right"></i>Report</a></li>
-    {% for field in primary_fields %}
+    {% for field in metric_fields %}
       <li><a href="#{{ field.name }}"><i class="icon-chevron-right"></i>{{ field.name }}</a></li>
     {% endfor %}
   </ul>
@@ -301,7 +301,7 @@
   <form method="GET" action="{{ graph_base }}">
 
     {# Report one table for each primary field. #}
-    {% for field in primary_fields %}
+    {% for field in metric_fields %}
       <section id="{{ field.name }}" />
       {{ utils.render_popup_begin('test_data-' + field.name, field.name, false) }}
       <table class="table table-striped table-hover table-condensed sortable">
@@ -357,13 +357,13 @@
     <table class="table table-striped table-condensed table-hover">
       <thead>
         <th>Name</th>
-        {% for field in primary_fields %}
+        {% for field in metric_fields %}
           <th colspan="3">{{field.name}}</th>
         {% endfor %}
       </thead>
       <thead>
        <th>-</th>
-        {% for field in primary_fields %}
+        {% for field in metric_fields %}
           <th>Prev</th>
           <th>Value</th>
           <th>%</th>
@@ -373,7 +373,7 @@
       {% for test_name,test_id in test_info %}
         <tr>
           <td class="benchmark-name">{{ test_name }}</td>
-          {% for field in primary_fields %}
+          {% for field in metric_fields %}
 		    {% set cr = request_info.sri.get_run_comparison_result(run, compare_to, test_id, field) %}
             <td>{{cr.previous}}</td>
             <td>{{cr.current}}</td>

Modified: lnt/trunk/lnt/server/ui/views.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/server/ui/views.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/server/ui/views.py (original)
+++ lnt/trunk/lnt/server/ui/views.py Thu Oct  1 11:06:12 2015
@@ -400,7 +400,7 @@ def v4_run(id):
 
     return render_template(
         "v4_run.html", ts=ts, options=options,
-        primary_fields=list(ts.Sample.get_primary_fields()),
+        metric_fields=list(ts.Sample.get_metric_fields()),
         test_info=test_info, analysis=lnt.server.reporting.analysis,
         test_min_value_filter=test_min_value_filter,
         request_info=info)
@@ -913,9 +913,9 @@ def v4_global_status():
     from lnt.server.ui import util
 
     ts = request.get_testsuite()
-    primary_fields = sorted(list(ts.Sample.get_primary_fields()),
-                            key=lambda f: f.name)
-    fields = dict((f.name, f) for f in primary_fields)
+    metric_fields = sorted(list(ts.Sample.get_metric_fields()),
+                           key=lambda f: f.name)
+    fields = dict((f.name, f) for f in metric_fields)
 
     # Get the latest run.
     latest = ts.query(ts.Run.start_time).\
@@ -934,7 +934,7 @@ def v4_global_status():
     # Get arguments.
     revision = int(request.args.get('revision',
                                     ts.Machine.DEFAULT_BASELINE_REVISION))
-    field = fields.get(request.args.get('field', None), primary_fields[0])
+    field = fields.get(request.args.get('field', None), metric_fields[0])
 
     # Get the list of all runs we might be interested in.
     recent_runs = ts.query(ts.Run).filter(ts.Run.start_time > yesterday).all()
@@ -1012,7 +1012,7 @@ def v4_global_status():
                            ts=ts,
                            tests=test_table,
                            machines=recent_machines,
-                           fields=primary_fields,
+                           fields=metric_fields,
                            selected_field=field,
                            selected_revision=revision)
 

Modified: lnt/trunk/lnt/testing/__init__.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/testing/__init__.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/testing/__init__.py (original)
+++ lnt/trunk/lnt/testing/__init__.py Thu Oct  1 11:06:12 2015
@@ -147,17 +147,16 @@ class TestSamples:
     data.
     """
 
-    def __init__(self, name, data, info={}):
+    def __init__(self, name, data, info={}, conv_f=float):
         self.name = str(name)
-        self.info = dict((str(key),str(value))
-                         for key,value in info.items())
-        self.data = map(float, data)
+        self.info = dict((str(key), str(value))
+                         for key, value in info.items())
+        self.data = map(conv_f, data)
 
     def render(self):
-        return { 'Name' : self.name,
-                 'Info' : self.info,
-                 'Data' : self.data }
-
+        return {'Name': self.name,
+                'Info': self.info,
+                'Data': self.data}
 
     def __repr__(self):
         # TODO remove this

Modified: lnt/trunk/lnt/tests/nt.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/tests/nt.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/lnt/tests/nt.py (original)
+++ lnt/trunk/lnt/tests/nt.py Thu Oct  1 11:06:12 2015
@@ -667,16 +667,20 @@ def execute_nt_tests(test_log, make_vari
 
 # Keep a mapping of mangled test names, to the original names in the test-suite.
 TEST_TO_NAME = {}
-KNOWN_SAMPLE_KEYS = ('compile', 'exec', 'gcc.compile', 'bc.compile', 'llc.compile',
+KNOWN_SAMPLE_KEYS = ('compile', 'exec', 'hash',
+                     'gcc.compile', 'bc.compile', 'llc.compile',
                      'llc-beta.compile', 'jit.compile', 'gcc.exec', 'llc.exec',
                      'llc-beta.exec', 'jit.exec')
+
+
 def load_nt_report_file(report_path, config):
     # Compute the test samples to report.
     sample_keys = []
+
     def append_to_sample_keys(tup):
-        stat = tup[0]
+        stat = tup[1]
         assert stat in KNOWN_SAMPLE_KEYS
-        if not tup[0] in config.exclude_stat_from_submission:
+        if stat not in config.exclude_stat_from_submission:
             sample_keys.append(tup)
     if config.test_style == "simple":
         test_namespace = 'nts'
@@ -684,25 +688,29 @@ def load_nt_report_file(report_path, con
         # for now, user time is the unqualified Time stat
         if config.test_time_stat == "real":
             time_stat = 'Real_'
-        append_to_sample_keys(('compile', 'CC_' + time_stat + 'Time', None, 'CC'))
-        append_to_sample_keys(('exec', 'Exec_' + time_stat + 'Time', None, 'Exec'))
+        append_to_sample_keys((True, 'compile', 'CC_' + time_stat + 'Time',
+                               None, 'CC', float))
+        append_to_sample_keys((False, 'hash', 'CC_Hash', None, 'CC', str))
+        append_to_sample_keys((True, 'exec', 'Exec_' + time_stat + 'Time',
+                               None, 'Exec', float))
     else:
         test_namespace = 'nightlytest'
-        append_to_sample_keys(('gcc.compile', 'GCCAS', 'time'))
-        append_to_sample_keys(('bc.compile', 'Bytecode', 'size'))
+        append_to_sample_keys((True, 'gcc.compile', 'GCCAS', 'time'))
+        append_to_sample_keys((True, 'bc.compile', 'Bytecode', 'size'))
         if config.test_llc:
-            append_to_sample_keys(('llc.compile', 'LLC compile', 'time'))
+            append_to_sample_keys((True, 'llc.compile', 'LLC compile', 'time'))
         if config.test_llcbeta:
-            append_to_sample_keys(('llc-beta.compile', 'LLC-BETA compile', 'time'))
+            append_to_sample_keys((True, 'llc-beta.compile',
+                                   'LLC-BETA compile', 'time'))
         if config.test_jit:
-            append_to_sample_keys(('jit.compile', 'JIT codegen', 'time'))
-        append_to_sample_keys(('gcc.exec', 'GCC', 'time'))
+            append_to_sample_keys((True, 'jit.compile', 'JIT codegen', 'time'))
+        append_to_sample_keys((True, 'gcc.exec', 'GCC', 'time'))
         if config.test_llc:
-            append_to_sample_keys(('llc.exec', 'LLC', 'time'))
+            append_to_sample_keys((True, 'llc.exec', 'LLC', 'time'))
         if config.test_llcbeta:
-            append_to_sample_keys(('llc-beta.exec', 'LLC-BETA', 'time'))
+            append_to_sample_keys((True, 'llc-beta.exec', 'LLC-BETA', 'time'))
         if config.test_jit:
-            append_to_sample_keys(('jit.exec', 'JIT', 'time'))
+            append_to_sample_keys((True, 'jit.exec', 'JIT', 'time'))
 
     # Load the report file.
     report_file = open(report_path, 'rb')
@@ -717,8 +725,10 @@ def load_nt_report_file(report_path, con
     if 'Program' not in header:
         fatal('missing key %r in report header' % 'Program')
     for item in sample_keys:
-        if item[1] not in header:
-            fatal('missing key %r in report header' % item[1])
+        required = item[0]
+        header_name = item[2]
+        if required and header_name not in header:
+            fatal('missing key %r in report header' % header_name)
 
     # We don't use the test info, currently.
     test_info = {}
@@ -751,13 +761,16 @@ def load_nt_report_file(report_path, con
         TEST_TO_NAME[test_base_name] = program_real
 
         for info in sample_keys:
-            if len(info) == 3:
-                name,key,tname = info
+            if len(info) == 4:
+                required, name, key, tname = info
                 success_key = None
+                conv_f = float
             else:
-                name,key,tname,success_key = info
+                required, name, key, tname, success_key, conv_f = info
 
             test_name = '%s.%s' % (test_base_name, name)
+            if not required and key not in record:
+                continue
             value = record[key]
             if success_key is None:
                 success_value = value
@@ -783,12 +796,12 @@ def load_nt_report_file(report_path, con
                     test_samples.append(lnt.testing.TestSamples(
                             test_name + '.status', [status_value], test_info))
             if value != '*':
-                if tname is None:
-                    test_samples.append(lnt.testing.TestSamples(
-                            test_name, [float(value)], test_info))
-                else:
-                    test_samples.append(lnt.testing.TestSamples(
-                            test_name + '.' + tname, [float(value)], test_info))
+                sample_test_name = test_name
+                if tname is not None:
+                    sample_test_name += '.' + tname
+                test_samples.append(lnt.testing.TestSamples(
+                    sample_test_name, [conv_f(value)], test_info,
+                    conv_f=conv_f))
 
     report_file.close()
 
@@ -1225,6 +1238,8 @@ SERVER_PASS = u'PASS'
 # if it failed it will have a status suffix.
 LOCAL_COMPILE_PERF = "compile"
 LOCAL_COMPILE_STATUS = "compile.status"
+LOCAL_HASH = "hash"
+LOCAL_HASH_STATUS = "hash.status"
 LOCAL_EXEC_PERF = "exec"
 LOCAL_EXEC_STATUS = "exec.status"
 
@@ -1233,6 +1248,7 @@ SERVER_COMPILE_RESULT = "compile_time"
 SERVER_EXEC_RESULT = "execution_time"
 SERVER_SCORE_RESULT = "score"
 SERVER_MEM_RESULT = "mem"
+SERVER_HASH_RESULT = "hash"
 
 
 class PastRunData(object):
@@ -1335,6 +1351,11 @@ def _process_reruns(config, server_reply
             updating_entry.execution_time = b.data
         elif test_type == LOCAL_EXEC_STATUS:
             updating_entry.execution_status = SERVER_FAIL
+        elif test_type == LOCAL_HASH:
+            # do not trigger reruns just because the binary has changed.
+            pass
+        elif test_type == LOCAL_HASH_STATUS:
+            updating_entry.hash_status = SERVER_FAIL
         else:
             assert False, "Unexpected local test type."
 

Modified: lnt/trunk/tests/runtest/Inputs/rerun-test-suite1/fake-report.simple.csv
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/Inputs/rerun-test-suite1/fake-report.simple.csv?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/Inputs/rerun-test-suite1/fake-report.simple.csv (original)
+++ lnt/trunk/tests/runtest/Inputs/rerun-test-suite1/fake-report.simple.csv Thu Oct  1 11:06:12 2015
@@ -1,70 +1,70 @@
-Program,CC,CC_Time,Exec,Exec_Time
-AtomicOps,pass, 0.0076,pass, 0.0003
-DefaultInitDynArrays,pass, 0.0159,pass, 0.0003
-FloatPrecision,pass, 0.0078,pass, 0.0003
-ObjC++/Hello,pass, 0.3348,pass, 0.0032
-ObjC++/property-reference,pass, 0.4295,pass, 0.0060
-ObjC++/property-reference-object,pass, 0.3569,pass, 0.0031
-ObjC++/reference-in-block-args,pass, 0.0127,pass, 0.0030
-ObjC/bitfield-access,pass, 0.0171,pass, 0.0030
-ObjC/bitfield-access-2,pass, 0.0171,pass, 0.0030
-ObjC/block-byref-aggr,pass, 0.3288,pass, 0.0030
-ObjC/constant-strings,pass, 0.0072,pass, 0.0031
-ObjC/dot-syntax,pass, 0.0223,pass, 0.0030
-ObjC/dot-syntax-1,pass, 0.0264,pass, 0.0031
-ObjC/dot-syntax-2,pass, 0.0136,pass, 0.0032
-ObjC/exceptions,pass, 0.2270,pass, 0.0032
-ObjC/exceptions-2,pass, 0.2062,pass, 0.0030
-ObjC/exceptions-3,pass, 0.2097,pass, 0.0031
-ObjC/exceptions-4,pass, 0.2103,pass, 0.0048
-ObjC/for-in,pass, 0.2147,pass, 0.0034
-ObjC/instance-method-metadata,pass, 0.2126,pass, 0.0030
-ObjC/messages,pass, 0.0193,pass, 0.0030
-ObjC/messages-2,pass, 0.0356,pass, 0.0030
-ObjC/parameter-passing,pass, 0.2268,pass, 0.0031
-ObjC/predefined-expr-in-method,pass, 0.0115,pass, 0.0031
-ObjC/property,pass, 0.2239,pass, 0.0031
-ObjC/protocols,pass, 0.0193,pass, 0.0030
-ObjC/synchronized,pass, 0.2094,pass, 0.1217
-ObjC/trivial-interface,pass, 0.2071,pass, 0.0031
-SignlessTypes/Large/cast,pass, 0.0314,pass, 0.0087
-SignlessTypes/cast-bug,pass, 0.0061,pass, 0.0003
-SignlessTypes/cast2,pass, 0.0085,pass, 0.0003
-SignlessTypes/ccc,pass, 0.0160,pass, 0.0003
-SignlessTypes/div,pass, 0.0139,pass, 0.0003
-SignlessTypes/factor,pass, 0.0169,pass, 0.0003
-SignlessTypes/rem,pass, 0.0599,pass, 0.0009
-SignlessTypes/shr,pass, 0.0139,pass, 0.0003
-StructModifyTest,pass, 0.0062,pass, 0.0003
-TestLoop,pass, 0.0088,pass, 0.0003
-Vector/SSE/sse.expandfft,pass, 0.0652,pass, 0.2459
-Vector/SSE/sse.isamax,pass, 0.0388,pass, 0.0003
-Vector/SSE/sse.shift,pass, 0.0217,pass, 0.0003
-Vector/SSE/sse.stepfft,pass, 0.0524,pass, 0.3313
-Vector/build,pass, 0.0121,pass, 0.0003
-Vector/build2,pass, 0.0159,pass, 1.1560
-Vector/divides,pass, 0.0090,pass, 0.0003
-Vector/multiplies,pass, 0.0169,pass, 1.8812
-Vector/simple,pass, 0.0134,pass, 0.0003
-Vector/sumarray,pass, 0.0099,pass, 0.0003
-Vector/sumarray-dbl,pass, 0.0107,pass, 0.0003
-block-byref-cxxobj-test,pass, 0.0148,pass, 0.0003
-block-byref-test,pass, 0.0080,pass, 0.0003
-block-call-r7674133,pass, 0.0072,pass, 0.0003
-block-copied-in-cxxobj,pass, 0.0186,pass, 0.0003
-block-copied-in-cxxobj-1,pass, 0.0165,pass, 0.0003
-blockstret,pass, 0.0089,pass, 0.0003
-byval-alignment,pass, 0.0079,pass, 0.0003
-conditional-gnu-ext,pass, 0.0066,pass, 0.0003
-conditional-gnu-ext-cxx,pass, 0.0082,pass, 0.0003
-initp1,pass, 0.0240,pass, 0.0003
-member-function-pointers,pass, 0.0120,pass, 0.0003
-ms_struct-bitfield,pass, 0.0053,pass, 0.0003
-ms_struct-bitfield-1,pass, 0.0049,pass, 0.0003
-ms_struct-bitfield-init,pass, 0.0100,pass, 0.0003
-ms_struct-bitfield-init-1,pass, 0.0119,pass, 0.0003
-ms_struct_pack_layout,pass, 0.0111,pass, 0.0003
-ms_struct_pack_layout-1,pass, 0.0046,pass, 0.0003
-printargs,pass, 0.0085,pass,0.01
-stmtexpr,pass, 0.0090, *,0.01
-vla,pass, 0.0194,pass, 0.0003
+Program,CC,CC_Time,CC_Hash,Exec,Exec_Time
+AtomicOps,pass, 0.0076,aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,pass, 0.0003
+DefaultInitDynArrays,pass, 0.0159,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+FloatPrecision,pass, 0.0078,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ObjC++/Hello,pass, 0.3348,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC++/property-reference,pass, 0.4295,9b6df823b2061b2e42555d1279048b97,pass, 0.0060
+ObjC++/property-reference-object,pass, 0.3569,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC++/reference-in-block-args,pass, 0.0127,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/bitfield-access,pass, 0.0171,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/bitfield-access-2,pass, 0.0171,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/block-byref-aggr,pass, 0.3288,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/constant-strings,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/dot-syntax,pass, 0.0223,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/dot-syntax-1,pass, 0.0264,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/dot-syntax-2,pass, 0.0136,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC/exceptions,pass, 0.2270,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC/exceptions-2,pass, 0.2062,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/exceptions-3,pass, 0.2097,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/exceptions-4,pass, 0.2103,9b6df823b2061b2e42555d1279048b97,pass, 0.0048
+ObjC/for-in,pass, 0.2147,9b6df823b2061b2e42555d1279048b97,pass, 0.0034
+ObjC/instance-method-metadata,pass, 0.2126,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/messages,pass, 0.0193,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/messages-2,pass, 0.0356,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/parameter-passing,pass, 0.2268,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/predefined-expr-in-method,pass, 0.0115,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/property,pass, 0.2239,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/protocols,pass, 0.0193,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/synchronized,pass, 0.2094,9b6df823b2061b2e42555d1279048b97,pass, 0.1217
+ObjC/trivial-interface,pass, 0.2071,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+SignlessTypes/Large/cast,pass, 0.0314,9b6df823b2061b2e42555d1279048b97,pass, 0.0087
+SignlessTypes/cast-bug,pass, 0.0061,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/cast2,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/ccc,pass, 0.0160,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/div,pass, 0.0139,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/factor,pass, 0.0169,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/rem,pass, 0.0599,9b6df823b2061b2e42555d1279048b97,pass, 0.0009
+SignlessTypes/shr,pass, 0.0139,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+StructModifyTest,pass, 0.0062,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+TestLoop,pass, 0.0088,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.expandfft,pass, 0.0652,9b6df823b2061b2e42555d1279048b97,pass, 0.2459
+Vector/SSE/sse.isamax,pass, 0.0388,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.shift,pass, 0.0217,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.stepfft,pass, 0.0524,9b6df823b2061b2e42555d1279048b97,pass, 0.3313
+Vector/build,pass, 0.0121,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/build2,pass, 0.0159,9b6df823b2061b2e42555d1279048b97,pass, 1.1560
+Vector/divides,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/multiplies,pass, 0.0169,9b6df823b2061b2e42555d1279048b97,pass, 1.8812
+Vector/simple,pass, 0.0134,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/sumarray,pass, 0.0099,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/sumarray-dbl,pass, 0.0107,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-byref-cxxobj-test,pass, 0.0148,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-byref-test,pass, 0.0080,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-call-r7674133,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-copied-in-cxxobj,pass, 0.0186,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-copied-in-cxxobj-1,pass, 0.0165,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+blockstret,pass, 0.0089,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+byval-alignment,pass, 0.0079,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+conditional-gnu-ext,pass, 0.0066,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+conditional-gnu-ext-cxx,pass, 0.0082,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+initp1,pass, 0.0240,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+member-function-pointers,pass, 0.0120,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield,pass, 0.0053,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-1,pass, 0.0049,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-init,pass, 0.0100,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-init-1,pass, 0.0119,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct_pack_layout,pass, 0.0111,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct_pack_layout-1,pass, 0.0046,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+printargs,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,pass,0.01
+stmtexpr,pass, 0.0090,9b6df823b2061b2e42555d1279048b97, *,0.01
+vla,pass, 0.0194,9b6df823b2061b2e42555d1279048b97,pass, 0.0003

Modified: lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/ms_struct_pack_layout-1.simple.report.txt
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/ms_struct_pack_layout-1.simple.report.txt?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/ms_struct_pack_layout-1.simple.report.txt (original)
+++ lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/ms_struct_pack_layout-1.simple.report.txt Thu Oct  1 11:06:12 2015
@@ -5,9 +5,10 @@
 TEST-PASS: compile /private/tmp/lnt_test_26297-2/test-2014-09-09_22-12-54/SingleSource/Benchmarks/Shootout/ms_struct_pack_layout-1
 TEST-RESULT-compile-success: pass
 TEST-RESULT-compile-time: user       0.7001
+TEST-RESULT-compile-hash: 1234567890abcdef
 TEST-RESULT-compile-real-time: real       0.8219
 
 TEST-PASS: exec /private/tmp/lnt_test_26297-2/test-2014-09-09_22-12-54/SingleSource/Benchmarks/Shootout/ms_struct_pack_layout-1
 TEST-RESULT-exec-success: pass
 TEST-RESULT-exec-time: user       0.9900
-TEST-RESULT-exec-real-time: real       1.0802
\ No newline at end of file
+TEST-RESULT-exec-real-time: real       1.0802

Modified: lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/vla.simple.report.txt
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/vla.simple.report.txt?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/vla.simple.report.txt (original)
+++ lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/Output/vla.simple.report.txt Thu Oct  1 11:06:12 2015
@@ -5,6 +5,7 @@
 TEST-PASS: compile /private/tmp/lnt_test_26297-2/test-2014-09-09_22-12-54/SingleSource/Benchmarks/Shootout-C++/vla
 TEST-RESULT-compile-success: pass
 TEST-RESULT-compile-time: user       0.7001
+TEST-RESULT-compile-hash: 1234567890abcdef
 TEST-RESULT-compile-real-time: real       0.8219
 
 TEST-PASS: exec /private/tmp/lnt_test_26297-2/test-2014-09-09_22-12-54/SingleSource/Benchmarks/Shootout-C++/vla

Modified: lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/TEST.simple.report
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/TEST.simple.report?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/TEST.simple.report (original)
+++ lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/TEST.simple.report Thu Oct  1 11:06:12 2015
@@ -26,6 +26,7 @@ sub FormatTime {
  ["CC"       , 'TEST-RESULT-compile-success: (pass|fail|xfail)'],
  ["CC_Time"  , 'TEST-RESULT-compile-time: user\s*([.0-9m:]+)', \&FormatTime],
  ["CC_Real_Time", 'TEST-RESULT-compile-real-time: real\s*([.0-9m:]+)', \&FormatTime],
+ ["CC_Hash",      'TEST-RESULT-compile-hash: (.*)'],
  ["Exec"     , 'TEST-RESULT-exec-success: (pass|fail|xfail)'],
  ["Exec_Time", 'TEST-RESULT-exec-time: user\s*([.0-9m:]+)', \&FormatTime],
  ["Exec_Real_Time", 'TEST-RESULT-exec-real-time: real\s*([.0-9m:]+)', \&FormatTime],

Modified: lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/fake-report.simple.csv
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/fake-report.simple.csv?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/fake-report.simple.csv (original)
+++ lnt/trunk/tests/runtest/Inputs/rerun-test-suite2/fake-report.simple.csv Thu Oct  1 11:06:12 2015
@@ -1,70 +1,70 @@
-Program,CC,CC_Time,Exec,Exec_Time
-AtomicOps,pass, 0.0076,pass, 0.0003
-DefaultInitDynArrays,pass, 0.0159,pass, 0.0003
-FloatPrecision,pass, 0.0078,pass, 0.0003
-ObjC++/Hello,pass, 0.3348,pass, 0.0032
-ObjC++/property-reference,pass, 0.4295,pass, 0.0060
-ObjC++/property-reference-object,pass, 0.3569,pass, 0.0031
-ObjC++/reference-in-block-args,pass, 0.0127,pass, 0.0030
-ObjC/bitfield-access,pass, 0.0171,pass, 0.0030
-ObjC/bitfield-access-2,pass, 0.0171,pass, 0.0030
-ObjC/block-byref-aggr,pass, 0.3288,pass, 0.0030
-ObjC/constant-strings,pass, 0.0072,pass, 0.0031
-ObjC/dot-syntax,pass, 0.0223,pass, 0.0030
-ObjC/dot-syntax-1,pass, 0.0264,pass, 0.0031
-ObjC/dot-syntax-2,pass, 0.0136,pass, 0.0032
-ObjC/exceptions,pass, 0.2270,pass, 0.0032
-ObjC/exceptions-2,pass, 0.2062,pass, 0.0030
-ObjC/exceptions-3,pass, 0.2097,pass, 0.0031
-ObjC/exceptions-4,pass, 0.2103,pass, 0.0048
-ObjC/for-in,pass, 0.2147,pass, 0.0034
-ObjC/instance-method-metadata,pass, 0.2126,pass, 0.0030
-ObjC/messages,pass, 0.0193,pass, 0.0030
-ObjC/messages-2,pass, 0.0356,pass, 0.0030
-ObjC/parameter-passing,pass, 0.2268,pass, 0.0031
-ObjC/predefined-expr-in-method,pass, 0.0115,pass, 0.0031
-ObjC/property,pass, 0.2239,pass, 0.0031
-ObjC/protocols,pass, 0.0193,pass, 0.0030
-ObjC/synchronized,pass, 0.2094,pass, 0.1217
-ObjC/trivial-interface,pass, 0.2071,pass, 0.0031
-SignlessTypes/Large/cast,pass, 0.0314,pass, 0.0087
-SignlessTypes/cast-bug,pass, 0.0061,pass, 0.0003
-SignlessTypes/cast2,pass, 0.0085,pass, 0.0003
-SignlessTypes/ccc,pass, 0.0160,pass, 0.0003
-SignlessTypes/div,pass, 0.0139,pass, 0.0003
-SignlessTypes/factor,pass, 0.0169,pass, 0.0003
-SignlessTypes/rem,pass, 0.0599,pass, 0.0009
-SignlessTypes/shr,pass, 0.0139,pass, 0.0003
-StructModifyTest,pass, 0.0062,pass, 0.0003
-TestLoop,pass, 0.0088,pass, 0.0003
-Vector/SSE/sse.expandfft,pass, 0.0652,pass, 0.2459
-Vector/SSE/sse.isamax,pass, 0.0388,pass, 0.0003
-Vector/SSE/sse.shift,pass, 0.0217,pass, 0.0003
-Vector/SSE/sse.stepfft,pass, 0.0524,pass, 0.3313
-Vector/build,pass, 0.0121,pass, 0.0003
-Vector/build2,pass, 0.0159,pass, 1.1560
-Vector/divides,pass, 0.0090,pass, 0.0003
-Vector/multiplies,pass, 0.0169,pass, 1.8812
-Vector/simple,pass, 0.0134,pass, 0.0003
-Vector/sumarray,pass, 0.0099,pass, 0.0003
-Vector/sumarray-dbl,pass, 0.0107,pass, 0.0003
-block-byref-cxxobj-test,pass, 0.0148,pass, 0.0003
-block-byref-test,pass, 0.0080,pass, 0.0003
-block-call-r7674133,pass, 0.0072,pass, 0.0003
-block-copied-in-cxxobj,pass, 0.0186,pass, 0.0003
-block-copied-in-cxxobj-1,pass, 0.0165,pass, 0.0003
-blockstret,pass, 0.0089,pass, 0.0003
-byval-alignment,pass, 0.0079,pass, 0.0003
-conditional-gnu-ext,pass, 0.0066,pass, 0.0003
-conditional-gnu-ext-cxx,pass, 0.0082,pass, 0.0003
-initp1,*, 0.0240,*, 0.0003
-member-function-pointers,pass, 0.0120,pass, 0.0003
-ms_struct-bitfield,pass, 0.0053,pass, 200.0003
-ms_struct-bitfield-1,pass, 0.0049,pass, 0.0003
-ms_struct-bitfield-init,pass, 0.0100,pass, 0.0003
-ms_struct-bitfield-init-1,pass, 0.0119,pass, 0.0003
-ms_struct_pack_layout,pass, 0.0111,pass, 0.0003
-ms_struct_pack_layout-1,pass, 0.0046,pass, 200.0003
-printargs,pass, 0.0085,*,0.02
-stmtexpr,pass, 0.0090,pass, 0.0003
-vla,pass, 0.0194,pass, 200.0003
+Program,CC,CC_Time,CC_Hash,Exec,Exec_Time
+AtomicOps,pass, 0.0076,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+DefaultInitDynArrays,pass, 0.0159,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+FloatPrecision,pass, 0.0078,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ObjC++/Hello,pass, 0.3348,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC++/property-reference,pass, 0.4295,9b6df823b2061b2e42555d1279048b97,pass, 0.0060
+ObjC++/property-reference-object,pass, 0.3569,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC++/reference-in-block-args,pass, 0.0127,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/bitfield-access,pass, 0.0171,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/bitfield-access-2,pass, 0.0171,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/block-byref-aggr,pass, 0.3288,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/constant-strings,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/dot-syntax,pass, 0.0223,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/dot-syntax-1,pass, 0.0264,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/dot-syntax-2,pass, 0.0136,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC/exceptions,pass, 0.2270,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC/exceptions-2,pass, 0.2062,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/exceptions-3,pass, 0.2097,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/exceptions-4,pass, 0.2103,9b6df823b2061b2e42555d1279048b97,pass, 0.0048
+ObjC/for-in,pass, 0.2147,9b6df823b2061b2e42555d1279048b97,pass, 0.0034
+ObjC/instance-method-metadata,pass, 0.2126,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/messages,pass, 0.0193,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/messages-2,pass, 0.0356,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/parameter-passing,pass, 0.2268,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/predefined-expr-in-method,pass, 0.0115,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/property,pass, 0.2239,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/protocols,pass, 0.0193,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/synchronized,pass, 0.2094,9b6df823b2061b2e42555d1279048b97,pass, 0.1217
+ObjC/trivial-interface,pass, 0.2071,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+SignlessTypes/Large/cast,pass, 0.0314,9b6df823b2061b2e42555d1279048b97,pass, 0.0087
+SignlessTypes/cast-bug,pass, 0.0061,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/cast2,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/ccc,pass, 0.0160,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/div,pass, 0.0139,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/factor,pass, 0.0169,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/rem,pass, 0.0599,9b6df823b2061b2e42555d1279048b97,pass, 0.0009
+SignlessTypes/shr,pass, 0.0139,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+StructModifyTest,pass, 0.0062,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+TestLoop,pass, 0.0088,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.expandfft,pass, 0.0652,9b6df823b2061b2e42555d1279048b97,pass, 0.2459
+Vector/SSE/sse.isamax,pass, 0.0388,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.shift,pass, 0.0217,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.stepfft,pass, 0.0524,9b6df823b2061b2e42555d1279048b97,pass, 0.3313
+Vector/build,pass, 0.0121,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/build2,pass, 0.0159,9b6df823b2061b2e42555d1279048b97,pass, 1.1560
+Vector/divides,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/multiplies,pass, 0.0169,9b6df823b2061b2e42555d1279048b97,pass, 1.8812
+Vector/simple,pass, 0.0134,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/sumarray,pass, 0.0099,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/sumarray-dbl,pass, 0.0107,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-byref-cxxobj-test,pass, 0.0148,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-byref-test,pass, 0.0080,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-call-r7674133,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-copied-in-cxxobj,pass, 0.0186,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-copied-in-cxxobj-1,pass, 0.0165,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+blockstret,pass, 0.0089,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+byval-alignment,pass, 0.0079,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+conditional-gnu-ext,pass, 0.0066,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+conditional-gnu-ext-cxx,pass, 0.0082,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+initp1,*, 0.0240,9b6df823b2061b2e42555d1279048b97,*, 0.0003
+member-function-pointers,pass, 0.0120,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield,pass, 0.0053,9b6df823b2061b2e42555d1279048b97,pass, 200.0003
+ms_struct-bitfield-1,pass, 0.0049,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-init,pass, 0.0100,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-init-1,pass, 0.0119,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct_pack_layout,pass, 0.0111,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct_pack_layout-1,pass, 0.0046,9b6df823b2061b2e42555d1279048b97,pass, 200.0003
+printargs,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,*,0.02
+stmtexpr,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+vla,pass, 0.0194,9b6df823b2061b2e42555d1279048b97,pass, 200.0003

Modified: lnt/trunk/tests/runtest/Inputs/test-suite/fake-report.simple.csv
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/Inputs/test-suite/fake-report.simple.csv?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/Inputs/test-suite/fake-report.simple.csv (original)
+++ lnt/trunk/tests/runtest/Inputs/test-suite/fake-report.simple.csv Thu Oct  1 11:06:12 2015
@@ -1,131 +1,131 @@
-Program,CC,CC_Time,Exec,Exec_Time
-2002-04-17-PrintfChar,pass, 0.0056,pass, 0.0003
-2002-05-02-ArgumentTest,pass, 0.0058,pass, 0.0003
-2002-05-02-CastTest,pass, 0.0131,pass, 0.0003
-2002-05-02-CastTest1,pass, 0.0049,pass, 0.0003
-2002-05-02-CastTest2,pass, 0.0104,pass, 0.0003
-2002-05-02-CastTest3,pass, 0.0055,pass, 0.0003
-2002-05-02-ManyArguments,pass, 0.0090,pass, 0.0003
-2002-05-03-NotTest,pass, 0.0087,pass, 0.0003
-2002-05-19-DivTest,pass, 0.0082,pass, 0.0003
-2002-08-02-CastTest,pass, 0.0072,pass, 0.0003
-2002-08-02-CastTest2,pass, 0.0066,pass, 0.0003
-2002-08-19-CodegenBug,pass, 0.0097,pass, 0.0003
-2002-10-09-ArrayResolution,pass, 0.0077,pass, 0.0003
-2002-10-12-StructureArgs,pass, 0.0075,pass, 0.0003
-2002-10-12-StructureArgsSimple,pass, 0.0073,pass, 0.0003
-2002-10-13-BadLoad,pass, 0.0055,pass, 0.0003
-2002-12-13-MishaTest,pass, 0.0095,pass, 0.0003
-2003-04-22-Switch,pass, 0.0090,pass, 0.0003
-2003-05-02-DependentPHI,pass, 0.0083,pass, 0.0003
-2003-05-07-VarArgs,pass, 0.0166,pass, 0.0003
-2003-05-12-MinIntProblem,pass, 0.0075,pass, 0.0003
-2003-05-14-AtExit,pass, 0.0100,pass, 0.0003
-2003-05-26-Shorts,pass, 0.0100,pass, 0.0003
-2003-05-31-CastToBool,pass, 0.0119,pass, 0.0003
-2003-05-31-LongShifts,pass, 0.0081,pass, 0.0003
-2003-07-06-IntOverflow,pass, 0.0112,pass, 0.0003
-2003-07-08-BitOpsTest,pass, 0.0079,pass, 0.0003
-2003-07-09-LoadShorts,pass, 0.0122,pass, 0.0003
-2003-07-09-SignedArgs,pass, 0.0166,pass, 0.0003
-2003-07-10-SignConversions,pass, 0.0080,pass, 0.0003
-2003-08-05-CastFPToUint,pass, 0.0104,pass, 0.0003
-2003-08-11-VaListArg,pass, 0.0227,pass, 0.0003
-2003-08-20-FoldBug,pass, 0.0076,pass, 0.0003
-2003-09-18-BitFieldTest,pass, 0.0076,pass, 0.0003
-2003-10-13-SwitchTest,pass, 0.0072,pass, 0.0003
-2003-10-29-ScalarReplBug,pass, 0.0072,pass, 0.0003
-2004-02-02-NegativeZero,pass, 0.0056,pass, 0.0003
-2004-06-20-StaticBitfieldInit,pass, 0.0072,pass, 0.0003
-2004-11-28-GlobalBoolLayout,pass, 0.0108,pass, 0.0003
-2005-05-11-Popcount-ffs-fls,pass, 0.0200,pass, 0.0003
-2005-05-12-Int64ToFP,pass, 0.0085,pass, 0.0003
-2005-05-13-SDivTwo,pass, 0.0084,pass, 0.0003
-2005-07-15-Bitfield-ABI,pass, 0.0072,pass, 0.0003
-2005-07-17-INT-To-FP,pass, 0.0107,pass, 0.0005
-2005-11-29-LongSwitch,pass, 0.0078,pass, 0.0003
-2006-01-23-UnionInit,pass, 0.0129,pass, 0.0003
-2006-01-29-SimpleIndirectCall,pass, 0.0075,pass, 0.0003
-2006-02-04-DivRem,pass, 0.0084,pass, 0.0003
-2006-12-01-float_varg,pass, 0.0070,pass, 0.0003
-2006-12-04-DynAllocAndRestore,pass, 0.0069,pass, 0.0003
-2006-12-07-Compare64BitConstant,pass, 0.0115,pass, 0.0003
-2006-12-11-LoadConstants,pass, 0.0474,pass, 0.0003
-2007-01-04-KNR-Args,pass, 0.0086,pass, 0.0003
-2007-03-02-VaCopy,pass, 0.0088,pass, 0.0003
-2007-04-10-BitfieldTest,pass, 0.0094,pass, 0.0003
-2008-04-18-LoopBug,pass, 0.0082,pass, 0.0003
-2008-04-20-LoopBug2,pass, 0.0129,pass, 0.0003
-2008-07-13-InlineSetjmp,pass, 0.0079,pass, 0.0003
-2009-04-16-BitfieldInitialization,pass, 0.0114,pass, 0.0003
-2009-12-07-StructReturn,pass, 0.0073,pass, 0.0003
-2010-05-24-BitfieldTest,pass, 0.0074,pass, 0.0003
-AtomicOps,pass, 0.0076,pass, 0.0003
-DefaultInitDynArrays,pass, 0.0159,pass, 0.0003
-FloatPrecision,pass, 0.0078,pass, 0.0003
-ObjC++/Hello,pass, 0.3348,pass, 0.0032
-ObjC++/property-reference,pass, 0.4295,pass, 0.0060
-ObjC++/property-reference-object,pass, 0.3569,pass, 0.0031
-ObjC++/reference-in-block-args,pass, 0.0127,pass, 0.0030
-ObjC/bitfield-access,pass, 0.0171,pass, 0.0030
-ObjC/bitfield-access-2,pass, 0.0171,pass, 0.0030
-ObjC/block-byref-aggr,pass, 0.3288,pass, 0.0030
-ObjC/constant-strings,pass, 0.0072,pass, 0.0031
-ObjC/dot-syntax,pass, 0.0223,pass, 0.0030
-ObjC/dot-syntax-1,pass, 0.0264,pass, 0.0031
-ObjC/dot-syntax-2,pass, 0.0136,pass, 0.0032
-ObjC/exceptions,pass, 0.2270,pass, 0.0032
-ObjC/exceptions-2,pass, 0.2062,pass, 0.0030
-ObjC/exceptions-3,pass, 0.2097,pass, 0.0031
-ObjC/exceptions-4,pass, 0.2103,pass, 0.0048
-ObjC/for-in,pass, 0.2147,pass, 0.0034
-ObjC/instance-method-metadata,pass, 0.2126,pass, 0.0030
-ObjC/messages,pass, 0.0193,pass, 0.0030
-ObjC/messages-2,pass, 0.0356,pass, 0.0030
-ObjC/parameter-passing,pass, 0.2268,pass, 0.0031
-ObjC/predefined-expr-in-method,pass, 0.0115,pass, 0.0031
-ObjC/property,pass, 0.2239,pass, 0.0031
-ObjC/protocols,pass, 0.0193,pass, 0.0030
-ObjC/synchronized,pass, 0.2094,pass, 0.1217
-ObjC/trivial-interface,pass, 0.2071,pass, 0.0031
-SignlessTypes/Large/cast,pass, 0.0314,pass, 0.0087
-SignlessTypes/cast-bug,pass, 0.0061,pass, 0.0003
-SignlessTypes/cast2,pass, 0.0085,pass, 0.0003
-SignlessTypes/ccc,pass, 0.0160,pass, 0.0003
-SignlessTypes/div,pass, 0.0139,pass, 0.0003
-SignlessTypes/factor,pass, 0.0169,pass, 0.0003
-SignlessTypes/rem,pass, 0.0599,pass, 0.0009
-SignlessTypes/shr,pass, 0.0139,pass, 0.0003
-StructModifyTest,pass, 0.0062,pass, 0.0003
-TestLoop,pass, 0.0088,pass, 0.0003
-Vector/SSE/sse.expandfft,pass, 0.0652,pass, 0.2459
-Vector/SSE/sse.isamax,pass, 0.0388,pass, 0.0003
-Vector/SSE/sse.shift,pass, 0.0217,pass, 0.0003
-Vector/SSE/sse.stepfft,pass, 0.0524,pass, 0.3313
-Vector/build,pass, 0.0121,pass, 0.0003
-Vector/build2,pass, 0.0159,pass, 1.1560
-Vector/divides,pass, 0.0090,pass, 0.0003
-Vector/multiplies,pass, 0.0169,pass, 1.8812
-Vector/simple,pass, 0.0134,pass, 0.0003
-Vector/sumarray,pass, 0.0099,pass, 0.0003
-Vector/sumarray-dbl,pass, 0.0107,pass, 0.0003
-block-byref-cxxobj-test,pass, 0.0148,pass, 0.0003
-block-byref-test,pass, 0.0080,pass, 0.0003
-block-call-r7674133,pass, 0.0072,pass, 0.0003
-block-copied-in-cxxobj,pass, 0.0186,pass, 0.0003
-block-copied-in-cxxobj-1,pass, 0.0165,pass, 0.0003
-blockstret,pass, 0.0089,pass, 0.0003
-byval-alignment,pass, 0.0079,pass, 0.0003
-conditional-gnu-ext,pass, 0.0066,pass, 0.0003
-conditional-gnu-ext-cxx,pass, 0.0082,pass, 0.0003
-initp1,pass, 0.0240,pass, 0.0003
-member-function-pointers,pass, 0.0120,pass, 0.0003
-ms_struct-bitfield,pass, 0.0053,pass, 0.0003
-ms_struct-bitfield-1,pass, 0.0049,pass, 0.0003
-ms_struct-bitfield-init,pass, 0.0100,pass, 0.0003
-ms_struct-bitfield-init-1,pass, 0.0119,pass, 0.0003
-ms_struct_pack_layout,pass, 0.0111,pass, 0.0003
-ms_struct_pack_layout-1,pass, 0.0046,pass, 0.0003
-printargs,pass, 0.0085,pass, 0.0003
-stmtexpr,pass, 0.0090,pass, 0.0003
-vla,pass, 0.0194,pass, 0.0003
+Program,CC,CC_Time,CC_Hash,Exec,Exec_Time
+2002-04-17-PrintfChar,pass, 0.0056,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-02-ArgumentTest,pass, 0.0058,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-02-CastTest,pass, 0.0131,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-02-CastTest1,pass, 0.0049,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-02-CastTest2,pass, 0.0104,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-02-CastTest3,pass, 0.0055,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-02-ManyArguments,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-03-NotTest,pass, 0.0087,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-05-19-DivTest,pass, 0.0082,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-08-02-CastTest,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-08-02-CastTest2,pass, 0.0066,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-08-19-CodegenBug,pass, 0.0097,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-10-09-ArrayResolution,pass, 0.0077,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-10-12-StructureArgs,pass, 0.0075,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-10-12-StructureArgsSimple,pass, 0.0073,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-10-13-BadLoad,pass, 0.0055,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2002-12-13-MishaTest,pass, 0.0095,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-04-22-Switch,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-02-DependentPHI,pass, 0.0083,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-07-VarArgs,pass, 0.0166,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-12-MinIntProblem,pass, 0.0075,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-14-AtExit,pass, 0.0100,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-26-Shorts,pass, 0.0100,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-31-CastToBool,pass, 0.0119,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-05-31-LongShifts,pass, 0.0081,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-07-06-IntOverflow,pass, 0.0112,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-07-08-BitOpsTest,pass, 0.0079,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-07-09-LoadShorts,pass, 0.0122,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-07-09-SignedArgs,pass, 0.0166,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-07-10-SignConversions,pass, 0.0080,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-08-05-CastFPToUint,pass, 0.0104,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-08-11-VaListArg,pass, 0.0227,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-08-20-FoldBug,pass, 0.0076,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-09-18-BitFieldTest,pass, 0.0076,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-10-13-SwitchTest,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2003-10-29-ScalarReplBug,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2004-02-02-NegativeZero,pass, 0.0056,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2004-06-20-StaticBitfieldInit,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2004-11-28-GlobalBoolLayout,pass, 0.0108,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2005-05-11-Popcount-ffs-fls,pass, 0.0200,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2005-05-12-Int64ToFP,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2005-05-13-SDivTwo,pass, 0.0084,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2005-07-15-Bitfield-ABI,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2005-07-17-INT-To-FP,pass, 0.0107,9b6df823b2061b2e42555d1279048b97,pass, 0.0005
+2005-11-29-LongSwitch,pass, 0.0078,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-01-23-UnionInit,pass, 0.0129,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-01-29-SimpleIndirectCall,pass, 0.0075,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-02-04-DivRem,pass, 0.0084,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-12-01-float_varg,pass, 0.0070,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-12-04-DynAllocAndRestore,pass, 0.0069,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-12-07-Compare64BitConstant,pass, 0.0115,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2006-12-11-LoadConstants,pass, 0.0474,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2007-01-04-KNR-Args,pass, 0.0086,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2007-03-02-VaCopy,pass, 0.0088,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2007-04-10-BitfieldTest,pass, 0.0094,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2008-04-18-LoopBug,pass, 0.0082,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2008-04-20-LoopBug2,pass, 0.0129,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2008-07-13-InlineSetjmp,pass, 0.0079,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2009-04-16-BitfieldInitialization,pass, 0.0114,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2009-12-07-StructReturn,pass, 0.0073,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+2010-05-24-BitfieldTest,pass, 0.0074,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+AtomicOps,pass, 0.0076,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+DefaultInitDynArrays,pass, 0.0159,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+FloatPrecision,pass, 0.0078,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ObjC++/Hello,pass, 0.3348,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC++/property-reference,pass, 0.4295,9b6df823b2061b2e42555d1279048b97,pass, 0.0060
+ObjC++/property-reference-object,pass, 0.3569,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC++/reference-in-block-args,pass, 0.0127,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/bitfield-access,pass, 0.0171,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/bitfield-access-2,pass, 0.0171,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/block-byref-aggr,pass, 0.3288,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/constant-strings,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/dot-syntax,pass, 0.0223,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/dot-syntax-1,pass, 0.0264,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/dot-syntax-2,pass, 0.0136,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC/exceptions,pass, 0.2270,9b6df823b2061b2e42555d1279048b97,pass, 0.0032
+ObjC/exceptions-2,pass, 0.2062,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/exceptions-3,pass, 0.2097,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/exceptions-4,pass, 0.2103,9b6df823b2061b2e42555d1279048b97,pass, 0.0048
+ObjC/for-in,pass, 0.2147,9b6df823b2061b2e42555d1279048b97,pass, 0.0034
+ObjC/instance-method-metadata,pass, 0.2126,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/messages,pass, 0.0193,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/messages-2,pass, 0.0356,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/parameter-passing,pass, 0.2268,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/predefined-expr-in-method,pass, 0.0115,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/property,pass, 0.2239,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+ObjC/protocols,pass, 0.0193,9b6df823b2061b2e42555d1279048b97,pass, 0.0030
+ObjC/synchronized,pass, 0.2094,9b6df823b2061b2e42555d1279048b97,pass, 0.1217
+ObjC/trivial-interface,pass, 0.2071,9b6df823b2061b2e42555d1279048b97,pass, 0.0031
+SignlessTypes/Large/cast,pass, 0.0314,9b6df823b2061b2e42555d1279048b97,pass, 0.0087
+SignlessTypes/cast-bug,pass, 0.0061,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/cast2,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/ccc,pass, 0.0160,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/div,pass, 0.0139,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/factor,pass, 0.0169,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+SignlessTypes/rem,pass, 0.0599,9b6df823b2061b2e42555d1279048b97,pass, 0.0009
+SignlessTypes/shr,pass, 0.0139,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+StructModifyTest,pass, 0.0062,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+TestLoop,pass, 0.0088,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.expandfft,pass, 0.0652,9b6df823b2061b2e42555d1279048b97,pass, 0.2459
+Vector/SSE/sse.isamax,pass, 0.0388,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.shift,pass, 0.0217,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/SSE/sse.stepfft,pass, 0.0524,9b6df823b2061b2e42555d1279048b97,pass, 0.3313
+Vector/build,pass, 0.0121,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/build2,pass, 0.0159,9b6df823b2061b2e42555d1279048b97,pass, 1.1560
+Vector/divides,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/multiplies,pass, 0.0169,9b6df823b2061b2e42555d1279048b97,pass, 1.8812
+Vector/simple,pass, 0.0134,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/sumarray,pass, 0.0099,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+Vector/sumarray-dbl,pass, 0.0107,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-byref-cxxobj-test,pass, 0.0148,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-byref-test,pass, 0.0080,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-call-r7674133,pass, 0.0072,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-copied-in-cxxobj,pass, 0.0186,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+block-copied-in-cxxobj-1,pass, 0.0165,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+blockstret,pass, 0.0089,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+byval-alignment,pass, 0.0079,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+conditional-gnu-ext,pass, 0.0066,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+conditional-gnu-ext-cxx,pass, 0.0082,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+initp1,pass, 0.0240,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+member-function-pointers,pass, 0.0120,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield,pass, 0.0053,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-1,pass, 0.0049,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-init,pass, 0.0100,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct-bitfield-init-1,pass, 0.0119,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct_pack_layout,pass, 0.0111,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+ms_struct_pack_layout-1,pass, 0.0046,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+printargs,pass, 0.0085,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+stmtexpr,pass, 0.0090,9b6df823b2061b2e42555d1279048b97,pass, 0.0003
+vla,pass, 0.0194,9b6df823b2061b2e42555d1279048b97,pass, 0.0003

Modified: lnt/trunk/tests/runtest/nt.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/runtest/nt.py?rev=249026&r1=249025&r2=249026&view=diff
==============================================================================
--- lnt/trunk/tests/runtest/nt.py (original)
+++ lnt/trunk/tests/runtest/nt.py Thu Oct  1 11:06:12 2015
@@ -39,6 +39,16 @@
 # RUN: FileCheck --check-prefix CHECK-NOCONF < %t.err %s
 # CHECK-NOCONF-NOT: configuring
 #
+# Check a basic nt run on a test-suite without binary hash support.
+# RUN: lnt runtest nt \
+# RUN:   --sandbox %t.SANDBOX-NO-HASH \
+# RUN:   --test-suite %S/Inputs/test-suite-nohash \
+# RUN:   --cc %{shared_inputs}/FakeCompilers/clang-r154331 \
+# RUN:   --no-timestamp > %t.log 2> %t.err
+# RUN: FileCheck --check-prefix CHECK-STDOUT < %t.log %s
+# RUN: FileCheck --check-prefix CHECK-BASIC < %t.err %s
+# RUN: FileCheck --check-prefix CHECK-REPORT < %t.SANDBOX-NO-HASH/build/report.json %s
+#
 # Manually set a run order.
 # RUN: lnt runtest nt \
 # RUN:   --sandbox %t.SANDBOX \




More information about the llvm-commits mailing list