[llvm-branch-commits] [llvm] [ctxprof] Move test serialization to yaml (PR #122545)
via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Fri Jan 10 15:21:11 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-lto
Author: Mircea Trofin (mtrofin)
<details>
<summary>Changes</summary>
We have a textual representation of contextual profiles for test scenarios, mainly. This patch moves that to YAML instead of JSON. YAML is more succinct and readable (some of the .ll tests should be illustrative). In addition, JSON is parse-able by the YAML reader.
A subsequent patch will address deserialization.
---
Patch is 34.00 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/122545.diff
31 Files Affected:
- (modified) llvm/include/llvm/ProfileData/PGOCtxProfWriter.h (+9-1)
- (modified) llvm/lib/ProfileData/PGOCtxProfWriter.cpp (+25-32)
- (modified) llvm/test/Analysis/CtxProfAnalysis/flatten-and-annotate.ll (+10-22)
- (modified) llvm/test/Analysis/CtxProfAnalysis/flatten-check-path.ll (+12-9)
- (modified) llvm/test/Analysis/CtxProfAnalysis/flatten-icp.ll (+16-9)
- (modified) llvm/test/Analysis/CtxProfAnalysis/flatten-zero-path.ll (+4-3)
- (modified) llvm/test/Analysis/CtxProfAnalysis/full-cycle.ll (+16-50)
- (modified) llvm/test/Analysis/CtxProfAnalysis/handle-select.ll (+10-3)
- (modified) llvm/test/Analysis/CtxProfAnalysis/inline.ll (+16-17)
- (modified) llvm/test/Analysis/CtxProfAnalysis/load-unapplicable.ll (+11-33)
- (modified) llvm/test/Analysis/CtxProfAnalysis/load.ll (+11-33)
- (modified) llvm/test/ThinLTO/X86/ctxprof.ll (+2-2)
- (modified) llvm/test/Transforms/EliminateAvailableExternally/transform-to-local.ll (+2-2)
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/bad.json (-1)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/bad.yaml (+1)
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/empty.json (-1)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/empty.yaml ()
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-bad-subctx.json (-8)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-bad-subctx.yaml (+4)
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-no-counters.json (-5)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-no-counters.yaml (+1)
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-no-ctx.json (-1)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-no-ctx.yaml (+1)
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-no-vector.json (-1)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/invalid-no-vector.yaml (+1)
- (removed) llvm/test/tools/llvm-ctxprof-util/Inputs/valid.json (-47)
- (added) llvm/test/tools/llvm-ctxprof-util/Inputs/valid.yaml (+13)
- (modified) llvm/test/tools/llvm-ctxprof-util/llvm-ctxprof-util-negative.test (+18-18)
- (modified) llvm/test/tools/llvm-ctxprof-util/llvm-ctxprof-util.test (+4-4)
- (modified) llvm/tools/llvm-ctxprof-util/llvm-ctxprof-util.cpp (+7-7)
- (modified) llvm/unittests/Transforms/Utils/CallPromotionUtilsTest.cpp (+1-1)
``````````diff
diff --git a/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h b/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h
index b370fdd9ba5a1c..f6158609c12855 100644
--- a/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h
+++ b/llvm/include/llvm/ProfileData/PGOCtxProfWriter.h
@@ -81,6 +81,14 @@ class PGOCtxProfileWriter final {
static constexpr StringRef ContainerMagic = "CTXP";
};
-Error createCtxProfFromJSON(StringRef Profile, raw_ostream &Out);
+/// Representation of the context node suitable for yaml / json serialization /
+/// deserialization.
+struct SerializableCtxRepresentation {
+ ctx_profile::GUID Guid = 0;
+ std::vector<uint64_t> Counters;
+ std::vector<std::vector<SerializableCtxRepresentation>> Callsites;
+};
+
+Error createCtxProfFromYAML(StringRef Profile, raw_ostream &Out);
} // namespace llvm
#endif
diff --git a/llvm/lib/ProfileData/PGOCtxProfWriter.cpp b/llvm/lib/ProfileData/PGOCtxProfWriter.cpp
index 4c0f3d459988b1..d22aadd6bd7eb0 100644
--- a/llvm/lib/ProfileData/PGOCtxProfWriter.cpp
+++ b/llvm/lib/ProfileData/PGOCtxProfWriter.cpp
@@ -13,7 +13,11 @@
#include "llvm/ProfileData/PGOCtxProfWriter.h"
#include "llvm/Bitstream/BitCodeEnums.h"
#include "llvm/ProfileData/CtxInstrContextNode.h"
+#include "llvm/Support/Error.h"
#include "llvm/Support/JSON.h"
+#include "llvm/Support/MemoryBuffer.h"
+#include "llvm/Support/YAMLTraits.h"
+#include "llvm/Support/raw_ostream.h"
using namespace llvm;
using namespace llvm::ctx_profile;
@@ -85,22 +89,15 @@ void PGOCtxProfileWriter::write(const ContextNode &RootNode) {
}
namespace {
-// A structural representation of the JSON input.
-struct DeserializableCtx {
- ctx_profile::GUID Guid = 0;
- std::vector<uint64_t> Counters;
- std::vector<std::vector<DeserializableCtx>> Callsites;
-};
-
ctx_profile::ContextNode *
createNode(std::vector<std::unique_ptr<char[]>> &Nodes,
- const std::vector<DeserializableCtx> &DCList);
+ const std::vector<SerializableCtxRepresentation> &DCList);
// Convert a DeserializableCtx into a ContextNode, potentially linking it to
// its sibling (e.g. callee at same callsite) "Next".
ctx_profile::ContextNode *
createNode(std::vector<std::unique_ptr<char[]>> &Nodes,
- const DeserializableCtx &DC,
+ const SerializableCtxRepresentation &DC,
ctx_profile::ContextNode *Next = nullptr) {
auto AllocSize = ctx_profile::ContextNode::getAllocSize(DC.Counters.size(),
DC.Callsites.size());
@@ -115,10 +112,11 @@ createNode(std::vector<std::unique_ptr<char[]>> &Nodes,
return Ret;
}
-// Convert a list of DeserializableCtx into a linked list of ContextNodes.
+// Convert a list of SerializableCtxRepresentation into a linked list of
+// ContextNodes.
ctx_profile::ContextNode *
createNode(std::vector<std::unique_ptr<char[]>> &Nodes,
- const std::vector<DeserializableCtx> &DCList) {
+ const std::vector<SerializableCtxRepresentation> &DCList) {
ctx_profile::ContextNode *List = nullptr;
for (const auto &DC : DCList)
List = createNode(Nodes, DC, List);
@@ -126,27 +124,22 @@ createNode(std::vector<std::unique_ptr<char[]>> &Nodes,
}
} // namespace
-namespace llvm {
-namespace json {
-bool fromJSON(const Value &E, DeserializableCtx &R, Path P) {
- json::ObjectMapper Mapper(E, P);
- return Mapper && Mapper.map("Guid", R.Guid) &&
- Mapper.map("Counters", R.Counters) &&
- Mapper.mapOptional("Callsites", R.Callsites);
-}
-} // namespace json
-} // namespace llvm
-
-Error llvm::createCtxProfFromJSON(StringRef Profile, raw_ostream &Out) {
- auto P = json::parse(Profile);
- if (!P)
- return P.takeError();
+LLVM_YAML_IS_SEQUENCE_VECTOR(SerializableCtxRepresentation)
+LLVM_YAML_IS_SEQUENCE_VECTOR(std::vector<SerializableCtxRepresentation>)
+template <> struct yaml::MappingTraits<SerializableCtxRepresentation> {
+ static void mapping(yaml::IO &IO, SerializableCtxRepresentation &SCR) {
+ IO.mapRequired("Guid", SCR.Guid);
+ IO.mapRequired("Counters", SCR.Counters);
+ IO.mapOptional("Callsites", SCR.Callsites);
+ }
+};
- json::Path::Root R("");
- std::vector<DeserializableCtx> DCList;
- if (!fromJSON(*P, DCList, R))
- return R.getError();
- // Nodes provides memory backing for the ContextualNodes.
+Error llvm::createCtxProfFromYAML(StringRef Profile, raw_ostream &Out) {
+ yaml::Input In(Profile);
+ std::vector<SerializableCtxRepresentation> DCList;
+ In >> DCList;
+ if (In.error())
+ return createStringError(In.error(), "incorrect yaml content");
std::vector<std::unique_ptr<char[]>> Nodes;
std::error_code EC;
if (EC)
@@ -162,4 +155,4 @@ Error llvm::createCtxProfFromJSON(StringRef Profile, raw_ostream &Out) {
if (EC)
return createStringError(EC, "failed to write output");
return Error::success();
-}
\ No newline at end of file
+}
diff --git a/llvm/test/Analysis/CtxProfAnalysis/flatten-and-annotate.ll b/llvm/test/Analysis/CtxProfAnalysis/flatten-and-annotate.ll
index b7950b26a3ef27..9eedade925b015 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/flatten-and-annotate.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/flatten-and-annotate.ll
@@ -2,7 +2,7 @@
;
; RUN: rm -rf %t
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
; RUN: opt -module-summary -passes='thinlto-pre-link<O2>' -use-ctx-profile=%t/profile.ctxprofdata \
; RUN: %t/example.ll -S -o %t/prelink.ll
; RUN: FileCheck --input-file %t/prelink.ll %s --check-prefix=PRELINK
@@ -58,27 +58,15 @@
; CHECK: ![[AN_ENTRYPOINT_EP]] = !{!"function_entry_count", i64 100}
; CHECK: ![[AN_ENTRYPOINT_BW]] = !{!"branch_weights", i32 40, i32 60}
-;--- profile.json
-[
- {
- "Guid": 4909520559318251808,
- "Counters": [100, 40],
- "Callsites": [
- [
- {
- "Guid": 11872291593386833696,
- "Counters": [ 100, 5 ]
- }
- ],
- [
- {
- "Guid": 11872291593386833696,
- "Counters": [ 40, 10 ]
- }
- ]
- ]
- }
-]
+;--- profile.yaml
+- Guid: 4909520559318251808
+ Counters: [100, 40]
+ Callsites: -
+ - Guid: 11872291593386833696
+ Counters: [ 100, 5 ]
+ -
+ - Guid: 11872291593386833696
+ Counters: [ 40, 10 ]
;--- example.ll
declare void @bar()
diff --git a/llvm/test/Analysis/CtxProfAnalysis/flatten-check-path.ll b/llvm/test/Analysis/CtxProfAnalysis/flatten-check-path.ll
index 42eaa67a983087..c84a72f60a3d02 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/flatten-check-path.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/flatten-check-path.ll
@@ -3,9 +3,9 @@
; already visited blocks count as taken (i.e. the flow continues through them).
;
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile_ok.json --output=%t/profile_ok.ctxprofdata
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile_pump.json --output=%t/profile_pump.ctxprofdata
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile_unreachable.json --output=%t/profile_unreachable.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile_ok.yaml --output=%t/profile_ok.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile_pump.yaml --output=%t/profile_pump.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile_unreachable.yaml --output=%t/profile_unreachable.ctxprofdata
;
; RUN: opt -passes=ctx-prof-flatten %t/example_ok.ll -use-ctx-profile=%t/profile_ok.ctxprofdata -S -o - | FileCheck %s
; RUN: not --crash opt -passes=ctx-prof-flatten %t/message_pump.ll -use-ctx-profile=%t/profile_pump.ctxprofdata -S 2>&1 | FileCheck %s --check-prefix=ASSERTION
@@ -38,8 +38,9 @@ exit:
}
!0 = !{i64 1234}
-;--- profile_ok.json
-[{"Guid":1234, "Counters":[2, 2, 1, 2]}]
+;--- profile_ok.yaml
+- Guid: 1234
+ Counters: [2, 2, 1, 2]
;--- message_pump.ll
; This is a message pump: the loop never exits. This should result in an
@@ -59,8 +60,9 @@ exit:
}
!0 = !{i64 1234}
-;--- profile_pump.json
-[{"Guid":1234, "Counters":[2, 10, 0]}]
+;--- profile_pump.yaml
+- Guid: 1234
+ Counters: [2, 10, 0]
;--- unreachable.ll
; An unreachable block is reached, that's an error
@@ -81,5 +83,6 @@ exit:
}
!0 = !{i64 1234}
-;--- profile_unreachable.json
-[{"Guid":1234, "Counters":[2, 1, 1, 2]}]
\ No newline at end of file
+;--- profile_unreachable.yaml
+- Guid: 1234
+ Counters: [2, 1, 1, 2]
\ No newline at end of file
diff --git a/llvm/test/Analysis/CtxProfAnalysis/flatten-icp.ll b/llvm/test/Analysis/CtxProfAnalysis/flatten-icp.ll
index fbffe780f0afaa..46c17377710d08 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/flatten-icp.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/flatten-icp.ll
@@ -1,5 +1,5 @@
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input %t/profile.json --output %t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input %t/profile.yaml --output %t/profile.ctxprofdata
;
; In the given profile, in one of the contexts the indirect call is taken, the
; target we're trying to ICP - GUID:2000 - doesn't appear at all. That should
@@ -45,11 +45,18 @@ attributes #1 = { noinline }
!1 = !{i64 3000}
!2 = !{i64 4000}
-;--- profile.json
-[ {
- "Guid": 4000, "Counters":[10], "Callsites": [
- [{"Guid":3000, "Counters":[10], "Callsites":[[{"Guid":1000, "Counters":[10]}]]}],
- [{"Guid":3000, "Counters":[10], "Callsites":[[{"Guid":9000, "Counters":[10]}]]}]
- ]
-}
-]
+;--- profile.yaml
+- Guid: 4000
+ Counters: [10]
+ Callsites: -
+ - Guid: 3000
+ Counters: [10]
+ Callsites: -
+ - Guid: 1000
+ Counters: [10]
+ -
+ - Guid: 3000
+ Counters: [10]
+ Callsites: -
+ - Guid: 9000
+ Counters: [10]
diff --git a/llvm/test/Analysis/CtxProfAnalysis/flatten-zero-path.ll b/llvm/test/Analysis/CtxProfAnalysis/flatten-zero-path.ll
index 7eea1c36afc37a..251ece655196a4 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/flatten-zero-path.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/flatten-zero-path.ll
@@ -1,6 +1,6 @@
; Check that flattened profile lowering handles cold subgraphs that end in "unreachable"
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
; RUN: opt -passes=ctx-prof-flatten %t/example.ll -use-ctx-profile=%t/profile.ctxprofdata -S -o - | FileCheck %s
; CHECK-LABEL: entry:
@@ -51,5 +51,6 @@ exit:
!0 = !{i64 1234}
-;--- profile.json
-[{"Guid":1234, "Counters":[6,0,0,0]}]
+;--- profile.yaml
+- Guid: 1234
+ Counters: [6,0,0,0]
diff --git a/llvm/test/Analysis/CtxProfAnalysis/full-cycle.ll b/llvm/test/Analysis/CtxProfAnalysis/full-cycle.ll
index 905e7eea9f49ee..5a8a2f4cad84b7 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/full-cycle.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/full-cycle.ll
@@ -8,7 +8,7 @@
; different counter values, and we expect resulting flat profile to be the sum
; (of values at the same index).
;
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
;
; RUN: opt -module-summary -passes='thinlto-pre-link<O2>' -use-ctx-profile=%t/profile.ctxprofdata -o %t/m1.bc %t/m1.ll
; RUN: opt -module-summary -passes='thinlto-pre-link<O2>' -use-ctx-profile=%t/profile.ctxprofdata -o %t/m2.bc %t/m2.ll
@@ -65,55 +65,21 @@ define void @entrypoint() {
call void @f3()
ret void
}
-;--- profile.json
-[
- {
- "Callsites": [
- [
- {
- "Callsites": [
- [
- {
- "Counters": [
- 10,
- 7
- ],
- "Guid": 3087265239403591524
- }
- ]
- ],
- "Counters": [
- 7
- ],
- "Guid": 2072045998141807037
- }
- ],
- [
- {
- "Callsites": [
- [
- {
- "Counters": [
- 1,
- 2
- ],
- "Guid": 3087265239403591524
- }
- ]
- ],
- "Counters": [
- 2
- ],
- "Guid": 4197650231481825559
- }
- ]
- ],
- "Counters": [
- 1
- ],
- "Guid": 10507721908651011566
- }
-]
+;--- profile.yaml
+- Guid: 10507721908651011566
+ Counters: [1]
+ Callsites: -
+ - Guid: 2072045998141807037
+ Counters: [7]
+ Callsites: -
+ - Guid: 3087265239403591524
+ Counters: [10, 7]
+ -
+ - Guid: 4197650231481825559
+ Counters: [2]
+ Callsites: -
+ - Guid: 3087265239403591524
+ Counters: [1, 2]
;--- expected.txt
Function Info:
2072045998141807037 : f1. MaxCounterID: 1. MaxCallsiteID: 1
diff --git a/llvm/test/Analysis/CtxProfAnalysis/handle-select.ll b/llvm/test/Analysis/CtxProfAnalysis/handle-select.ll
index e740466a03f3e9..ce90d27fc9906b 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/handle-select.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/handle-select.ll
@@ -4,7 +4,7 @@
; the `select` is elided.
;
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
;
; RUN: opt -passes=ctx-instr-gen %t/example.ll -use-ctx-profile=%t/profile.ctxprofdata -S -o - | FileCheck %s --check-prefix=INSTR
; RUN: opt -passes=ctx-instr-gen,module-inline %t/example.ll -use-ctx-profile=%t/profile.ctxprofdata -S -o - | FileCheck %s --check-prefix=POST-INL
@@ -72,5 +72,12 @@ define i32 @bar(i32 %t) !guid !1 {
!0 = !{i64 1234}
!1 = !{i64 5678}
-;--- profile.json
-[{"Guid":1234, "Counters":[10, 4], "Callsites":[[{"Guid": 5678, "Counters":[4,3]}],[{"Guid": 5678, "Counters":[6,6]}]]}]
+;--- profile.yaml
+- Guid: 1234
+ Counters: [10, 4]
+ Callsites: -
+ - Guid: 5678
+ Counters: [4,3]
+ -
+ - Guid: 5678
+ Counters: [6,6]
diff --git a/llvm/test/Analysis/CtxProfAnalysis/inline.ll b/llvm/test/Analysis/CtxProfAnalysis/inline.ll
index 9381418c4e3f12..6c1e199c2ba1c0 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/inline.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/inline.ll
@@ -1,6 +1,6 @@
; RUN: rm -rf %t
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
; RUN: opt -passes='module-inline,print<ctx-prof-analysis>' -ctx-profile-printer-level=everything %t/module.ll -S \
; RUN: -use-ctx-profile=%t/profile.ctxprofdata -ctx-profile-printer-level=json \
@@ -94,22 +94,21 @@ define i32 @b() !guid !2 {
!0 = !{i64 1000}
!1 = !{i64 1001}
!2 = !{i64 1002}
-;--- profile.json
-[
- { "Guid": 1000,
- "Counters": [10, 2, 8],
- "Callsites": [
- [ { "Guid": 1001,
- "Counters": [2, 100],
- "Callsites": [[{"Guid": 1002, "Counters": [100]}]]}
- ],
- [ { "Guid": 1001,
- "Counters": [8, 500],
- "Callsites": [[{"Guid": 1002, "Counters": [500]}]]}
- ]
- ]
- }
-]
+;--- profile.yaml
+- Guid: 1000
+ Counters: [10, 2, 8]
+ Callsites: -
+ - Guid: 1001
+ Counters: [2, 100]
+ Callsites: -
+ - Guid: 1002
+ Counters: [100]
+ -
+ - Guid: 1001
+ Counters: [8, 500]
+ Callsites: -
+ - Guid: 1002
+ Counters: [500]
;--- expected.json
[
{ "Guid": 1000,
diff --git a/llvm/test/Analysis/CtxProfAnalysis/load-unapplicable.ll b/llvm/test/Analysis/CtxProfAnalysis/load-unapplicable.ll
index 09d2e150fbcef6..38dd0ea825d825 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/load-unapplicable.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/load-unapplicable.ll
@@ -5,7 +5,7 @@
;
; RUN: rm -rf %t
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
; RUN: opt -passes='require<ctx-prof-analysis>,print<ctx-prof-analysis>' -ctx-profile-printer-level=everything \
; RUN: %t/example.ll -S 2>&1 | FileCheck %s
@@ -15,38 +15,16 @@
; output it from opt. Note that the root GUIDs - 12341 and 34234 - are different from
; the GUID present in the module, which is otherwise present in the profile, but not
; as a root.
-;--- profile.json
-[
- {
- "Counters": [
- 9
- ],
- "Guid": 12341
- },
- {
- "Counters": [
- 5
- ],
- "Guid": 1000
- },
- {
- "Callsites": [
- [
- {
- "Counters": [
- 6,
- 7
- ],
- "Guid": 1000
- }
- ]
- ],
- "Counters": [
- 1
- ],
- "Guid": 34234
- }
-]
+;--- profile.yaml
+- Guid: 12341
+ Counters: [9]
+- Guid: 1000
+ Counters: [5]
+- Guid: 34234
+ Counters: [1]
+ Callsites: -
+ - Guid: 1000
+ Counters: [6, 7]
;--- example.ll
declare void @bar()
diff --git a/llvm/test/Analysis/CtxProfAnalysis/load.ll b/llvm/test/Analysis/CtxProfAnalysis/load.ll
index 0cf6c5973dc6b5..62c6344ed3fec0 100644
--- a/llvm/test/Analysis/CtxProfAnalysis/load.ll
+++ b/llvm/test/Analysis/CtxProfAnalysis/load.ll
@@ -2,7 +2,7 @@
;
; RUN: rm -rf %t
; RUN: split-file %s %t
-; RUN: llvm-ctxprof-util fromJSON --input=%t/profile.json --output=%t/profile.ctxprofdata
+; RUN: llvm-ctxprof-util fromYAML --input=%t/profile.yaml --output=%t/profile.ctxprofdata
; RUN: opt -passes='require<ctx-prof-analysis>,print<ctx-prof-analysis>' -ctx-profile-printer-level=everything \
; RUN: %t/example.ll -S 2>&1 | FileCheck %s --check-prefix=NO-CTX
@@ -23,38 +23,16 @@
;
; This is the reference profile, laid out in the format the json formatter will
; output it from opt.
-;--- profile.json
-[
- {
- "Counters": [
- 9
- ],
- "Guid": 12341
- },
- {
- "Counters": [
- 5
- ],
- "Guid": 12074870348631550642
- },
- {
- "Callsites": [
- [
- {
- "Counters": [
- 6,
- 7
- ],
- "Guid": 728453322856651412
- }
- ]
- ],
- "Counters": [
- 1
- ],
- "Guid": 11872291593386833696
- }
-]
+;--- profile.yaml
+- Guid: 12341
+ Counters: [9]
+- Guid: 12074870348631550642
+ Counters: [5]
+- Guid: 11872291593386833696
+ Counters: [1]
+ Callsites: -
+ - Guid: 728453322856651412
+ Counters: [6, 7]
;--- expected-profile-output.txt
Function Info:
4909520559318251808 : an_entrypoint. MaxCounterID: 2. MaxCallsiteID: 1
diff --git a/llvm/test/ThinLTO/X86/ctxprof.ll b/llvm/test/ThinLTO/X86/ctxprof.ll
index 4baea3b25890eb..fd325dad5ada1e 100644
--- a/llvm/test/ThinLTO/X86/ctxprof.ll
+++ b/llvm/test/ThinLTO/X86/ctxprof.ll
@@ -55,8 +55,8 @@
; RUN: echo '[ \
; RUN: {"Guid": 6019442868614718803, "Counters": [1], "Callsites": [[{"Guid": 15593096274670919754, "Counters": [1]}]]}, \
; RUN: {"Guid": 15593096274670919754, "Counters": [1], "Callsites": [[{"Guid": 6019442868614718803, "Counters": [1]}]]} \
-; RUN: ]' > %t_exp/ctxprof.json
-; RUN: llvm-ctxprof-util fromJSON --input %t_exp/ctxprof.json --output %t_exp/ctxprof.bitstream
+; RUN: ]' > %t_exp/ctxprof.yaml
+; RUN: llvm-ctxprof-util fromYAML --input %t_exp/ctxprof.yaml --output %t_exp/ctxprof.bitstream
; RUN: llvm-lto2 run %t/m1-instr.bc %t/m2-instr.bc \
; RUN: -o %t_exp/result.o -save-temps \
; RUN: -use-ctx-profile=%t_exp/ctxprof.bitstream \
diff --git a/llvm/test/Transforms/EliminateAvailableExternally/transform-to-loca...
[truncated]
``````````
</details>
https://github.com/llvm/llvm-project/pull/122545
More information about the llvm-branch-commits
mailing list