[PATCH] D68221: [LNT] Python 3 support: stable profile getFunctions output
Thomas Preud'homme via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 30 06:56:46 PDT 2019
thopre created this revision.
thopre added reviewers: cmatthews, hubert.reinterpretcast, kristof.beyls.
thopre added a parent revision: D68220: [LNT] Python 3 support: stable showtests output.
thopre added a child revision: D68222: [LNT] Python 3 support: fix text/binary confusion in profile support.
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.
https://reviews.llvm.org/D68221
Files:
lnt/lnttool/main.py
tests/lnttool/Profile.py
Index: tests/lnttool/Profile.py
===================================================================
--- tests/lnttool/Profile.py
+++ tests/lnttool/Profile.py
@@ -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"]]
Index: lnt/lnttool/main.py
===================================================================
--- lnt/lnttool/main.py
+++ lnt/lnttool/main.py
@@ -424,11 +424,13 @@
@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")
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D68221.222417.patch
Type: text/x-patch
Size: 1705 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190930/54878445/attachment.bin>
More information about the llvm-commits
mailing list