mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-12 05:56:28 +00:00
[VPlanRecipeBase] Add eraseFromParent().
Reviewers: dcaballe, hsaito, mkuper, hfinkel Reviewed By: dcaballe Differential Revision: https://reviews.llvm.org/D48081 llvm-svn: 334951
This commit is contained in:
parent
b9e05bec1f
commit
7611816b75
@ -225,6 +225,10 @@ void VPRecipeBase::insertBefore(VPRecipeBase *InsertPos) {
|
||||
Parent->getRecipeList().insert(InsertPos->getIterator(), this);
|
||||
}
|
||||
|
||||
iplist<VPRecipeBase>::iterator VPRecipeBase::eraseFromParent() {
|
||||
return getParent()->getRecipeList().erase(getIterator());
|
||||
}
|
||||
|
||||
void VPInstruction::generateInstruction(VPTransformState &State,
|
||||
unsigned Part) {
|
||||
IRBuilder<> &Builder = State.Builder;
|
||||
|
@ -556,6 +556,11 @@ public:
|
||||
/// Insert an unlinked recipe into a basic block immediately before
|
||||
/// the specified recipe.
|
||||
void insertBefore(VPRecipeBase *InsertPos);
|
||||
|
||||
/// This method unlinks 'this' from the containing basic block and deletes it.
|
||||
///
|
||||
/// \returns an iterator pointing to the element after the erased one
|
||||
iplist<VPRecipeBase>::iterator eraseFromParent();
|
||||
};
|
||||
|
||||
/// This is a concrete Recipe that models a single VPlan-level instruction.
|
||||
|
@ -40,5 +40,25 @@ TEST(VPInstructionTest, insertBefore) {
|
||||
CHECK_ITERATOR(VPBB1, I3, I2, I1);
|
||||
}
|
||||
|
||||
TEST(VPInstructionTest, eraseFromParent) {
|
||||
VPInstruction *I1 = new VPInstruction(0, {});
|
||||
VPInstruction *I2 = new VPInstruction(1, {});
|
||||
VPInstruction *I3 = new VPInstruction(2, {});
|
||||
|
||||
VPBasicBlock VPBB1;
|
||||
VPBB1.appendRecipe(I1);
|
||||
VPBB1.appendRecipe(I2);
|
||||
VPBB1.appendRecipe(I3);
|
||||
|
||||
I2->eraseFromParent();
|
||||
CHECK_ITERATOR(VPBB1, I1, I3);
|
||||
|
||||
I1->eraseFromParent();
|
||||
CHECK_ITERATOR(VPBB1, I3);
|
||||
|
||||
I3->eraseFromParent();
|
||||
EXPECT_TRUE(VPBB1.empty());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
} // namespace llvm
|
||||
|
Loading…
Reference in New Issue
Block a user