Author: wlei Date: 2020-12-07T22:36:25-08:00 New Revision: eea67baf8706d82268d26e908cf5415c5af114ff
URL: https://github.com/llvm/llvm-project/commit/eea67baf8706d82268d26e908cf5415c5af114ff DIFF: https://github.com/llvm/llvm-project/commit/eea67baf8706d82268d26e908cf5415c5af114ff.diff LOG: [llvm-profgen][NFC] Fix test failure by making unwinder's output deterministic Don't know why under Sanitizer build(asan/msan/ubsan), the `std::unordered_map<string, ...>`'s output order is reversed, make the regression test failed. This change creates a workaround by using sorted container to make the output deterministic. Reviewed By: hoy, wenlei Differential Revision: https://reviews.llvm.org/D92816 Added: Modified: llvm/test/tools/llvm-profgen/inline-cs-noprobe.test llvm/tools/llvm-profgen/PerfReader.cpp Removed: ################################################################################ diff --git a/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test b/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test index 649e27e2a131..98767a9b29b7 100644 --- a/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test +++ b/llvm/test/tools/llvm-profgen/inline-cs-noprobe.test @@ -10,13 +10,14 @@ ; CHECK: 1: 14 ; CHECK-UNWINDER: Binary(inline-cs-noprobe.perfbin)'s Range Counter: -; CHECK-UNWINDER: main:1 @ foo:3.2 @ bar -; CHECK-UNWINDER: (6af, 6bb): 14 ; CHECK-UNWINDER: main:1 @ foo ; CHECK-UNWINDER: (670, 6ad): 1 ; CHECK-UNWINDER: (67e, 69b): 1 ; CHECK-UNWINDER: (67e, 6ad): 13 ; CHECK-UNWINDER: (6bd, 6c8): 14 +; CHECK-UNWINDER: main:1 @ foo:3.2 @ bar +; CHECK-UNWINDER: (6af, 6bb): 14 + ; CHECK-UNWINDER: Binary(inline-cs-noprobe.perfbin)'s Branch Counter: ; CHECK-UNWINDER: main:1 @ foo diff --git a/llvm/tools/llvm-profgen/PerfReader.cpp b/llvm/tools/llvm-profgen/PerfReader.cpp index e6625d11fd5f..6a0d54e2de87 100644 --- a/llvm/tools/llvm-profgen/PerfReader.cpp +++ b/llvm/tools/llvm-profgen/PerfReader.cpp @@ -199,7 +199,10 @@ ProfiledBinary *PerfReader::getBinary(uint64_t Address) { } static void printSampleCounter(ContextRangeCounter &Counter) { - for (auto Range : Counter) { + // Use ordered map to make the output deterministic + std::map<std::string, RangeSample> OrderedCounter(Counter.begin(), + Counter.end()); + for (auto Range : OrderedCounter) { outs() << Range.first << "\n"; for (auto I : Range.second) { outs() << " (" << format("%" PRIx64, I.first.first) << ", " _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits