[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