MCPcopy Create free account
hub / github.com/Samsung/UTopia / TEST_F

Function TEST_F

tests/inputanalysis/TestDefMapGenerator.cpp:181–241  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

179};
180
181TEST_F(TestDefMapGenerator, generate_ArrayGroupP) {
182 const std::string Code = "extern \"C\" {\n"
183 "void API1(int *, int);\n"
184 "int API2();\n"
185 "void test() {\n"
186 " int Var1[128] = { 0, };\n"
187 " int Var2[128] = { 0, };\n"
188 " int Var3[128] = { 0, };\n"
189 " int Var4[128] = { 0, };\n"
190 " int Var5 = API2();\n"
191 " int Var6 = API2();\n"
192 " API1(Var1, Var5);\n"
193 " API1(Var2, Var5);\n"
194 " API1(Var3, Var6);\n"
195 " API1(Var4, Var6);\n"
196 "}}";
197 SourceFileManager SFM;
198 SFM.createFile("test.cpp", Code);
199 std::vector<std::string> Srcs = {SFM.getFilePath("test.cpp")};
200 ASSERT_TRUE(init(SFM.getSrcDirPath(), Srcs));
201
202 ArrayAnalysisReport ArrayReport;
203 ArrayReport.set("API1", 0, 1);
204 Loader->setArrayReport(ArrayReport);
205
206 auto Node1 = generateRDNode("test", 0, 8, -1);
207 auto Node2 = generateRDNode("test", 0, 11, -1);
208 auto Node3 = generateRDNode("test", 0, 14, -1);
209 auto Node4 = generateRDNode("test", 0, 17, -1);
210 auto Node5 = generateRDNode("test", 0, 19, -1);
211 auto Node6 = generateRDNode("test", 0, 22, -1);
212 ASSERT_TRUE(Node1 && Node2 && Node3 && Node4 && Node5 && Node6);
213
214 auto *API1_1 = llvm::dyn_cast_or_null<llvm::CallBase>(
215 IRAccess->getInstruction("test", 0, 26));
216 auto *API1_2 = llvm::dyn_cast_or_null<llvm::CallBase>(
217 IRAccess->getInstruction("test", 0, 29));
218 auto *API1_3 = llvm::dyn_cast_or_null<llvm::CallBase>(
219 IRAccess->getInstruction("test", 0, 32));
220 auto *API1_4 = llvm::dyn_cast_or_null<llvm::CallBase>(
221 IRAccess->getInstruction("test", 0, 35));
222 ASSERT_TRUE(API1_1 && API1_2 && API1_3 && API1_4);
223
224 Node1->setFirstUse(*API1_1, 0);
225 Node2->setFirstUse(*API1_2, 0);
226 Node3->setFirstUse(*API1_3, 0);
227 Node4->setFirstUse(*API1_4, 0);
228 Node5->setFirstUse(*API1_1, 1);
229 Node5->addFirstUse(*API1_2, 1);
230 Node6->setFirstUse(*API1_3, 1);
231 Node6->addFirstUse(*API1_4, 1);
232
233 std::vector<RDNode> Nodes = {*Node1, *Node2, *Node3, *Node4, *Node5, *Node6};
234 auto Defs = generateDefinitions(Nodes);
235 ASSERT_EQ(Defs.size(), 6);
236
237 for (const auto &Iter : Defs) {
238 ASSERT_NE(Iter.Filters.find(ArrayGroupFilter::FilterName),

Callers

nothing calls this directly

Calls 15

ASTValueClass · 0.85
getSrcDirPathMethod · 0.80
setArrayReportMethod · 0.80
getInstructionMethod · 0.80
setFirstUseMethod · 0.80
addFirstUseMethod · 0.80
sizeMethod · 0.80
endMethod · 0.80
emptyMethod · 0.80
getLLVMModuleMethod · 0.80
getSourceCollectionMethod · 0.80
setAllocSizeReportMethod · 0.80

Tested by

no test coverage detected