[LNT] r373860 - [LNT] Python 3 support: stable profile getFunctions output

Thomas Preud'homme via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 6 11:30:32 PDT 2019


Author: thopre
Date: Sun Oct  6 11:30:31 2019
New Revision: 373860

URL: http://llvm.org/viewvc/llvm-project?rev=373860&view=rev
Log:
[LNT] Python 3 support: stable profile getFunctions output

lnt profile getFunctions output depends on the iteration order of a
dictionary, which is an implementation detail up to Python 3.6
(included). The test tests/lnttool/Profile.py is thus unstable accross
architectures and Python versions. This commit adds a --sortkeys option
to the getFunctions command to sort the keys in the dictionary when
dumping it into json, thus allowing stable results of
tests/lnttool/Profile.py by using this option.

Reviewers: cmatthews, hubert.reinterpretcast, kristof.beyls

Reviewed By: hubert.reinterpretcast

Subscribers: llvm-commits

Differential Revision: https://reviews.llvm.org/D68221

Modified:
    lnt/trunk/lnt/lnttool/main.py
    lnt/trunk/tests/lnttool/Profile.py

Modified: lnt/trunk/lnt/lnttool/main.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/lnt/lnttool/main.py?rev=373860&r1=373859&r2=373860&view=diff
==============================================================================
--- lnt/trunk/lnt/lnttool/main.py (original)
+++ lnt/trunk/lnt/lnttool/main.py Sun Oct  6 11:30:31 2019
@@ -424,11 +424,13 @@ def command_top_level_counters(input):
 
 @action_profile.command("getFunctions")
 @click.argument("input", type=click.Path(exists=True))
-def command_get_functions(input):
+ at click.option("--sortkeys", is_flag=True)
+def command_get_functions(input, sortkeys):
     """print the functions in a profile"""
     import json
     import lnt.testing.profile.profile as profile
-    print(json.dumps(profile.Profile.fromFile(input).getFunctions()))
+    print(json.dumps(profile.Profile.fromFile(input).getFunctions(),
+                     sort_keys=sortkeys))
 
 
 @action_profile.command("getCodeForFunction")

Modified: lnt/trunk/tests/lnttool/Profile.py
URL: http://llvm.org/viewvc/llvm-project/lnt/trunk/tests/lnttool/Profile.py?rev=373860&r1=373859&r2=373860&view=diff
==============================================================================
--- lnt/trunk/tests/lnttool/Profile.py (original)
+++ lnt/trunk/tests/lnttool/Profile.py Sun Oct  6 11:30:31 2019
@@ -4,8 +4,8 @@
 # RUN: lnt profile getTopLevelCounters %S/Inputs/test.lntprof | FileCheck --check-prefix=CHECK-GETTLC %s
 # CHECK-GETTLC: {"cycles": 12345.0, "branch-misses": 200.0}
 
-# RUN: lnt profile getFunctions %S/Inputs/test.lntprof | FileCheck --check-prefix=CHECK-GETFUNCTIONS %s
-# CHECK-GETFUNCTIONS: {"fn1": {"length": 2, "counters": {"cycles": 45.0, "branch-misses": 10.0}}}
+# RUN: lnt profile getFunctions --sortkeys %S/Inputs/test.lntprof | FileCheck --check-prefix=CHECK-GETFUNCTIONS %s
+# CHECK-GETFUNCTIONS: {"fn1": {"counters": {"branch-misses": 10.0, "cycles": 45.0}, "length": 2}}
 
 # RUN: lnt profile getCodeForFunction %S/Inputs/test.lntprof fn1 | FileCheck --check-prefix=CHECK-GETFN1 %s
 # CHECK-GETFN1: [{}, 1048576, "add r0, r0, r0"], [{"cycles": 100.0}, 1048580, "sub r1, r0, r0"]]




More information about the llvm-commits mailing list