summaryrefslogtreecommitdiffstats
path: root/llvm/unittests/IR/UserTest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/unittests/IR/UserTest.cpp')
-rw-r--r--llvm/unittests/IR/UserTest.cpp24
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/unittests/IR/UserTest.cpp b/llvm/unittests/IR/UserTest.cpp
index 56b054b6835..8d488389448 100644
--- a/llvm/unittests/IR/UserTest.cpp
+++ b/llvm/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
OpenPOWER on IntegriCloud