@@ -103,9 +103,13 @@ class MockModuleAnalysisHandle
103
103
ModuleAnalysisManager::Invalidator &));
104
104
};
105
105
106
- struct PGOInstrumentationGenTest
107
- : public Test,
108
- WithParamInterface<std::tuple<StringRef, StringRef>> {
106
+ template <typename ParamType> struct PGOTestName {
107
+ std::string operator ()(const TestParamInfo<ParamType> &Info) const {
108
+ return std::get<1 >(Info.param ).str ();
109
+ }
110
+ };
111
+
112
+ struct PGOInstrumentationGenTest : public Test {
109
113
ModulePassManager MPM;
110
114
PassBuilder PB;
111
115
MockModuleAnalysisHandle MMAHandle;
@@ -141,12 +145,47 @@ struct PGOInstrumentationGenTest
141
145
}
142
146
};
143
147
148
+ struct PGOInstrumentationGenInstrumentTest
149
+ : PGOInstrumentationGenTest,
150
+ WithParamInterface<std::tuple<StringRef, StringRef>> {};
151
+
144
152
static constexpr StringRef CodeWithFuncDefs = R"(
145
153
define i32 @f(i32 %n) {
146
154
entry:
147
155
ret i32 0
148
156
})" ;
149
157
158
+ INSTANTIATE_TEST_SUITE_P (
159
+ PGOInstrumetationGenTestSuite, PGOInstrumentationGenInstrumentTest,
160
+ Values (std::make_tuple(CodeWithFuncDefs, " instrument_function_defs" )),
161
+ PGOTestName<PGOInstrumentationGenInstrumentTest::ParamType>());
162
+
163
+ TEST_P (PGOInstrumentationGenInstrumentTest, Instrumented) {
164
+ const StringRef Code = std::get<0 >(GetParam ());
165
+ parseAssembly (Code);
166
+
167
+ ASSERT_THAT (M, NotNull ());
168
+
169
+ Sequence PassSequence;
170
+ EXPECT_CALL (MMAHandle, run (Ref (*M), _))
171
+ .InSequence (PassSequence)
172
+ .WillOnce (DoDefault ());
173
+ EXPECT_CALL (MMAHandle, invalidate (Ref (*M), _, _))
174
+ .InSequence (PassSequence)
175
+ .WillOnce (DoDefault ());
176
+
177
+ MPM.run (*M, MAM);
178
+
179
+ const auto *IRInstrVar =
180
+ M->getNamedGlobal (INSTR_PROF_QUOTE (INSTR_PROF_RAW_VERSION_VAR));
181
+ ASSERT_THAT (IRInstrVar, NotNull ());
182
+ EXPECT_FALSE (IRInstrVar->isDeclaration ());
183
+ }
184
+
185
+ struct PGOInstrumentationGenIgnoreTest
186
+ : PGOInstrumentationGenTest,
187
+ WithParamInterface<std::tuple<StringRef, StringRef>> {};
188
+
150
189
static constexpr StringRef CodeWithFuncDecls = R"(
151
190
declare i32 @f(i32);
152
191
)" ;
@@ -157,33 +196,26 @@ static constexpr StringRef CodeWithGlobals = R"(
157
196
)" ;
158
197
159
198
INSTANTIATE_TEST_SUITE_P (
160
- PGOInstrumetationGenTestSuite, PGOInstrumentationGenTest,
161
- Values (std::make_tuple(CodeWithFuncDefs, " instrument_function_defs" ),
162
- std::make_tuple(CodeWithFuncDecls, " instrument_function_decls" ),
199
+ PGOInstrumetationGenIgnoreTestSuite, PGOInstrumentationGenIgnoreTest,
200
+ Values (std::make_tuple(CodeWithFuncDecls, " instrument_function_decls" ),
163
201
std::make_tuple(CodeWithGlobals, " instrument_globals" )),
164
- [](const TestParamInfo<PGOInstrumentationGenTest::ParamType> &Info) {
165
- return std::get<1 >(Info.param ).str ();
166
- });
202
+ PGOTestName<PGOInstrumentationGenIgnoreTest::ParamType>());
167
203
168
- TEST_P (PGOInstrumentationGenTest, Instrumented ) {
204
+ TEST_P (PGOInstrumentationGenIgnoreTest, NotInstrumented ) {
169
205
const StringRef Code = std::get<0 >(GetParam ());
206
+
170
207
parseAssembly (Code);
171
208
172
209
ASSERT_THAT (M, NotNull ());
173
210
174
- Sequence PassSequence;
175
- EXPECT_CALL (MMAHandle, run (Ref (*M), _))
176
- .InSequence (PassSequence)
177
- .WillOnce (DoDefault ());
178
- EXPECT_CALL (MMAHandle, invalidate (Ref (*M), _, _))
179
- .InSequence (PassSequence)
180
- .WillOnce (DoDefault ());
211
+ EXPECT_CALL (MMAHandle, run (Ref (*M), _)).WillOnce (DoDefault ());
212
+ EXPECT_CALL (MMAHandle, invalidate (Ref (*M), _, _)).Times (0 );
181
213
182
214
MPM.run (*M, MAM);
183
215
184
216
const auto *IRInstrVar =
185
217
M->getNamedGlobal (INSTR_PROF_QUOTE (INSTR_PROF_RAW_VERSION_VAR));
186
- EXPECT_THAT (IRInstrVar, NotNull ());
218
+ ASSERT_THAT (IRInstrVar, NotNull ());
187
219
EXPECT_FALSE (IRInstrVar->isDeclaration ());
188
220
}
189
221
0 commit comments