-/// Ordered floating point minimum/maximum tests.
-
-static void m_OrdFMin_expect_match_and_delete(Value *Cmp, Value *Select,
- Value *L, Value *R) {
- Value *MatchL, *MatchR;
- EXPECT_TRUE(m_OrdFMin(m_Value(MatchL), m_Value(MatchR)).match(Select));
- EXPECT_EQ(L, MatchL);
- EXPECT_EQ(R, MatchR);
- delete Select;
- delete Cmp;
-}
-
-static void m_OrdFMin_expect_nomatch_and_delete(Value *Cmp, Value *Select,
- Value *L, Value *R) {
- Value *MatchL, *MatchR;
- EXPECT_FALSE(m_OrdFMin(m_Value(MatchL), m_Value(MatchR)).match(Select));
- delete Select;
- delete Cmp;
-}
-
-static void m_OrdFMax_expect_match_and_delete(Value *Cmp, Value *Select,
- Value *L, Value *R) {
- Value *MatchL, *MatchR;
- EXPECT_TRUE(m_OrdFMax(m_Value(MatchL), m_Value(MatchR)).match(Select));
- EXPECT_EQ(L, MatchL);
- EXPECT_EQ(R, MatchR);
- delete Select;
- delete Cmp;
-}
-
-static void m_OrdFMax_expect_nomatch_and_delete(Value *Cmp, Value *Select,
- Value *L, Value *R) {
- Value *MatchL, *MatchR;
- EXPECT_FALSE(m_OrdFMax(m_Value(MatchL), m_Value(MatchR)).match(Select));
- delete Select;
- delete Cmp;
-}
-
-
-
-TEST(PatternMatchTest, FloatingPointOrderedMin) {
- LLVMContext &C(getGlobalContext());
- IRBuilder<true, NoFolder> Builder(C);
-
+struct PatternMatchTest : ::testing::Test {
+ LLVMContext Ctx;
+ OwningPtr<Module> M;
+ Function *F;
+ BasicBlock *BB;
+ IRBuilder<true, NoFolder> Builder;
+
+ PatternMatchTest()
+ : M(new Module("PatternMatchTestModule", Ctx)),
+ F(Function::Create(
+ FunctionType::get(Type::getVoidTy(Ctx), /* IsVarArg */ false),
+ Function::ExternalLinkage, "f", M.get())),
+ BB(BasicBlock::Create(Ctx, "entry", F)), Builder(BB) {}
+};
+
+TEST_F(PatternMatchTest, FloatingPointOrderedMin) {