Skip to content

Commit c170996

Browse files
committed
Add unit test
1 parent 1ac3071 commit c170996

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

llvm/unittests/Transforms/Vectorize/VPlanVerifierTest.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,38 @@ TEST_F(VPVerifierTest, BlockOutsideRegionWithParent) {
287287
#endif
288288
}
289289

290+
TEST_F(VPVerifierTest, NonHeaderPHIInHeader) {
291+
VPlan &Plan = getPlan();
292+
VPValue *Zero = Plan.getOrAddLiveIn(ConstantInt::get(Type::getInt32Ty(C), 0));
293+
auto *CanIV = new VPCanonicalIVPHIRecipe(Zero, {});
294+
VPInstruction *BranchOnCond =
295+
new VPInstruction(VPInstruction::BranchOnCond, {CanIV});
296+
297+
VPBasicBlock *VPBB1 = Plan.getEntry();
298+
VPBasicBlock *VPBB2 = Plan.createVPBasicBlock("");
299+
300+
VPBB2->appendRecipe(CanIV);
301+
302+
PHINode *PHINode = PHINode::Create(Type::getInt32Ty(C), 2);
303+
VPIRPhi *IRPhi = new VPIRPhi(*PHINode);
304+
VPBB2->appendRecipe(IRPhi);
305+
VPBB2->appendRecipe(BranchOnCond);
306+
307+
VPRegionBlock *R1 = Plan.createVPRegionBlock(VPBB2, VPBB2, "R1");
308+
VPBlockUtils::connectBlocks(VPBB1, R1);
309+
VPBlockUtils::connectBlocks(R1, Plan.getScalarHeader());
310+
311+
#if GTEST_HAS_STREAM_REDIRECTION
312+
::testing::internal::CaptureStderr();
313+
#endif
314+
EXPECT_FALSE(verifyVPlanIsValid(Plan));
315+
#if GTEST_HAS_STREAM_REDIRECTION
316+
EXPECT_STREQ(
317+
"Found non-header PHI recipe in header VPBB: IR <badref> = phi i32 \n",
318+
::testing::internal::GetCapturedStderr().c_str());
319+
#endif
320+
}
321+
290322
class VPIRVerifierTest : public VPlanTestIRBase {};
291323

292324
TEST_F(VPIRVerifierTest, testVerifyIRPhi) {

0 commit comments

Comments
 (0)