MCPcopy Create free account
hub / github.com/GANGE666/xVMP / testRoundTrip

Method testRoundTrip

src/unittests/ProfileData/SampleProfTest.cpp:61–202  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

59 }
60
61 void testRoundTrip(SampleProfileFormat Format, bool Remap) {
62 SmallVector<char, 128> ProfilePath;
63 ASSERT_TRUE(NoError(llvm::sys::fs::createTemporaryFile("profile", "", ProfilePath)));
64 StringRef Profile(ProfilePath.data(), ProfilePath.size());
65 createWriter(Format, Profile);
66
67 StringRef FooName("_Z3fooi");
68 FunctionSamples FooSamples;
69 FooSamples.setName(FooName);
70 FooSamples.addTotalSamples(7711);
71 FooSamples.addHeadSamples(610);
72 FooSamples.addBodySamples(1, 0, 610);
73 FooSamples.addBodySamples(2, 0, 600);
74 FooSamples.addBodySamples(4, 0, 60000);
75 FooSamples.addBodySamples(8, 0, 60351);
76 FooSamples.addBodySamples(10, 0, 605);
77
78 StringRef BarName("_Z3bari");
79 FunctionSamples BarSamples;
80 BarSamples.setName(BarName);
81 BarSamples.addTotalSamples(20301);
82 BarSamples.addHeadSamples(1437);
83 BarSamples.addBodySamples(1, 0, 1437);
84 // Test how reader/writer handles unmangled names.
85 StringRef MconstructName("_M_construct<char *>");
86 StringRef StringviewName("string_view<std::allocator<char> >");
87 BarSamples.addCalledTargetSamples(1, 0, MconstructName, 1000);
88 BarSamples.addCalledTargetSamples(1, 0, StringviewName, 437);
89
90 Module M("my_module", Context);
91 FunctionType *fn_type =
92 FunctionType::get(Type::getVoidTy(Context), {}, false);
93 M.getOrInsertFunction(FooName, fn_type);
94 M.getOrInsertFunction(BarName, fn_type);
95
96 StringMap<FunctionSamples> Profiles;
97 Profiles[FooName] = std::move(FooSamples);
98 Profiles[BarName] = std::move(BarSamples);
99
100 std::error_code EC;
101 EC = Writer->write(Profiles);
102 ASSERT_TRUE(NoError(EC));
103
104 Writer->getOutputStream().flush();
105
106 readProfile(M, Profile);
107
108 EC = Reader->read();
109 ASSERT_TRUE(NoError(EC));
110
111 if (Remap) {
112 auto MemBuffer = llvm::MemoryBuffer::getMemBuffer(R"(
113 # Types 'int' and 'long' are equivalent
114 type i l
115 # Function names 'foo' and 'faux' are equivalent
116 name 3foo 4faux
117 )");
118 Reader.reset(new SampleProfileReaderItaniumRemapper(

Callers

nothing calls this directly

Calls 15

NoErrorFunction · 0.85
createTemporaryFileFunction · 0.85
createWriterFunction · 0.85
getRepInFormatFunction · 0.85
addTotalSamplesMethod · 0.80
addHeadSamplesMethod · 0.80
addBodySamplesMethod · 0.80
getTotalSamplesMethod · 0.80
getHeadSamplesMethod · 0.80
findCallTargetMapAtMethod · 0.80
getTotalCountMethod · 0.80

Tested by

no test coverage detected