Skip to content

Commit 4864dd8

Browse files
author
Martin Mory
committed
fix LLVMBasedICFGTest - with IncludeGlobals = true per default we have some more functions. Added a test case to allow distinction between IncludeGlobals = {true, false}.
1 parent 0733e1f commit 4864dd8

1 file changed

Lines changed: 35 additions & 3 deletions

File tree

unittests/PhasarLLVM/ControlFlow/LLVMBasedICFGTest.cpp

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,33 @@ TEST(LLVMBasedICFGTest, StaticCallSite_1) {
4141
}
4242
}
4343

44-
TEST(LLVMBasedICFGTest, StaticCallSite_2) {
44+
TEST(LLVMBasedICFGTest, StaticCallSite_2a) {
45+
ProjectIRDB IRDB(
46+
{unittest::PathToLLTestFiles + "call_graphs/static_callsite_2_c.ll"},
47+
IRDBOptions::WPA);
48+
LLVMTypeHierarchy TH(IRDB);
49+
LLVMPointsToSet PT(IRDB);
50+
LLVMBasedICFG ICFG(IRDB, CallGraphAnalysisType::CHA, {"main"}, &TH, &PT, Soundness::Soundy, false);
51+
const llvm::Function *F = IRDB.getFunctionDefinition("main");
52+
const llvm::Function *FOO = IRDB.getFunctionDefinition("foo");
53+
const llvm::Function *BAR = IRDB.getFunctionDefinition("bar");
54+
ASSERT_TRUE(F);
55+
ASSERT_TRUE(FOO);
56+
ASSERT_TRUE(BAR);
57+
58+
set<const llvm::Function *> FunctionSet;
59+
FunctionSet.insert(F);
60+
FunctionSet.insert(FOO);
61+
FunctionSet.insert(BAR);
62+
63+
set<const llvm::Function *> FunSet = ICFG.getAllFunctions();
64+
ASSERT_EQ(FunctionSet, FunSet);
65+
66+
set<const llvm::Instruction *> CallsFromWithin = ICFG.getCallsFromWithin(F);
67+
ASSERT_EQ(CallsFromWithin.size(), 2U);
68+
}
69+
70+
TEST(LLVMBasedICFGTest, StaticCallSite_2b) {
4571
ProjectIRDB IRDB(
4672
{unittest::PathToLLTestFiles + "call_graphs/static_callsite_2_c.ll"},
4773
IRDBOptions::WPA);
@@ -51,14 +77,20 @@ TEST(LLVMBasedICFGTest, StaticCallSite_2) {
5177
const llvm::Function *F = IRDB.getFunctionDefinition("main");
5278
const llvm::Function *FOO = IRDB.getFunctionDefinition("foo");
5379
const llvm::Function *BAR = IRDB.getFunctionDefinition("bar");
80+
const llvm::Function *CTOR = IRDB.getFunctionDefinition("__psrCRuntimeGlobalCtorsModel");
81+
const llvm::Function *DTOR = IRDB.getFunctionDefinition("__psrCRuntimeGlobalDtorsModel");
5482
ASSERT_TRUE(F);
5583
ASSERT_TRUE(FOO);
5684
ASSERT_TRUE(BAR);
85+
ASSERT_TRUE(CTOR);
86+
ASSERT_TRUE(DTOR);
5787

5888
set<const llvm::Function *> FunctionSet;
5989
FunctionSet.insert(F);
6090
FunctionSet.insert(FOO);
6191
FunctionSet.insert(BAR);
92+
FunctionSet.insert(CTOR);
93+
FunctionSet.insert(DTOR);
6294

6395
set<const llvm::Function *> FunSet = ICFG.getAllFunctions();
6496
ASSERT_EQ(FunctionSet, FunSet);
@@ -232,7 +264,7 @@ TEST(LLVMBasedICFGTest, StaticCallSite_7) {
232264
getLastInstructionOf(IRDB.getFunctionDefinition("_ZN3Foo1fEv"));
233265
set<const llvm::Function *> AllMethods = ICFG.getAllFunctions();
234266
ASSERT_EQ(LastInst, I);
235-
ASSERT_EQ(AllMethods.size(), 3U);
267+
ASSERT_EQ(AllMethods.size(), 5U);
236268
ASSERT_TRUE(AllMethods.count(Main));
237269
ASSERT_TRUE(AllMethods.count(FooF));
238270
ASSERT_TRUE(AllMethods.count(F));
@@ -257,7 +289,7 @@ TEST(LLVMBasedICFGTest, StaticCallSite_8) {
257289
ASSERT_EQ(Insts.size(), Insts1.size());
258290

259291
set<const llvm::Function *> FunSet = ICFG.getAllFunctions();
260-
ASSERT_EQ(FunSet.size(), 3U);
292+
ASSERT_EQ(FunSet.size(), 5U);
261293

262294
const llvm::Instruction *I = getNthInstruction(F, 1);
263295
ASSERT_TRUE(ICFG.isStartPoint(I));

0 commit comments

Comments
 (0)