diff options
Diffstat (limited to 'unittests/IR/UserTest.cpp')
-rw-r--r-- | unittests/IR/UserTest.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/unittests/IR/UserTest.cpp b/unittests/IR/UserTest.cpp index 56b054b68359..8d488389448a 100644 --- a/unittests/IR/UserTest.cpp +++ b/unittests/IR/UserTest.cpp @@ -93,4 +93,28 @@ TEST(UserTest, ValueOpIteration) { EXPECT_EQ(P.value_op_end(), (I - 2) + 8); } +TEST(UserTest, PersonalityUser) { + Module M("", getGlobalContext()); + FunctionType *RetVoidTy = + FunctionType::get(Type::getVoidTy(getGlobalContext()), false); + Function *PersonalityF = Function::Create( + RetVoidTy, GlobalValue::ExternalLinkage, "PersonalityFn", &M); + Function *TestF = + Function::Create(RetVoidTy, GlobalValue::ExternalLinkage, "TestFn", &M); + + // Set up the personality function + TestF->setPersonalityFn(PersonalityF); + auto PersonalityUsers = PersonalityF->user_begin(); + + // One user and that user is the Test function + EXPECT_EQ(*PersonalityUsers, TestF); + EXPECT_EQ(++PersonalityUsers, PersonalityF->user_end()); + + // Reset the personality function + TestF->setPersonalityFn(nullptr); + + // No users should remain + EXPECT_TRUE(TestF->user_empty()); +} + } // end anonymous namespace |