mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-23 20:34:58 +00:00
[Dominators] Fix reachable visitation and reenable a unit test
This fixes a minor bug in insertion to a reachable node that caused DominatorTree.InsertDeleteExhaustive flakiness. The patch also adds a new testcase for this exact failure. llvm-svn: 308074
This commit is contained in:
parent
be68eaac03
commit
89e4fa6df2
@ -410,7 +410,7 @@ struct SemiNCAInfo {
|
||||
II.AffectedQueue.push_back(CurrentNode);
|
||||
|
||||
// Discover and collect affected successors of the current node.
|
||||
VisitInsertion(DT, CurrentNode, ToLevel, NCD, II);
|
||||
VisitInsertion(DT, CurrentNode, CurrentNode->getLevel(), NCD, II);
|
||||
}
|
||||
|
||||
// Finish by updating immediate dominators and levels.
|
||||
|
@ -364,6 +364,32 @@ TEST(DominatorTree, InsertReachable) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(DominatorTree, InsertReachable2) {
|
||||
CFGHolder Holder;
|
||||
std::vector<CFGBuilder::Arc> Arcs = {
|
||||
{"1", "2"}, {"2", "3"}, {"3", "4"}, {"4", "5"}, {"5", "6"}, {"5", "7"},
|
||||
{"7", "5"}, {"2", "8"}, {"8", "11"}, {"11", "12"}, {"12", "10"},
|
||||
{"10", "9"}, {"9", "10"}};
|
||||
|
||||
std::vector<CFGBuilder::Update> Updates = {{Insert, {"10", "7"}}};
|
||||
CFGBuilder B(Holder.F, Arcs, Updates);
|
||||
DominatorTree DT(*Holder.F);
|
||||
EXPECT_TRUE(DT.verify());
|
||||
PostDomTree PDT(*Holder.F);
|
||||
EXPECT_TRUE(PDT.verify());
|
||||
|
||||
Optional<CFGBuilder::Update> LastUpdate = B.applyUpdate();
|
||||
EXPECT_TRUE(LastUpdate);
|
||||
|
||||
EXPECT_EQ(LastUpdate->Action, Insert);
|
||||
BasicBlock *From = B.getOrAddBlock(LastUpdate->Edge.From);
|
||||
BasicBlock *To = B.getOrAddBlock(LastUpdate->Edge.To);
|
||||
DT.insertEdge(From, To);
|
||||
EXPECT_TRUE(DT.verify());
|
||||
PDT.insertEdge(From, To);
|
||||
EXPECT_TRUE(PDT.verify());
|
||||
}
|
||||
|
||||
TEST(DominatorTree, InsertUnreachable) {
|
||||
CFGHolder Holder;
|
||||
std::vector<CFGBuilder::Arc> Arcs = {{"1", "2"}, {"2", "3"}, {"3", "4"},
|
||||
@ -538,7 +564,7 @@ TEST(DominatorTree, InsertDelete) {
|
||||
}
|
||||
}
|
||||
|
||||
TEST(DominatorTree, DISABLED_InsertDeleteExhaustive) {
|
||||
TEST(DominatorTree, InsertDeleteExhaustive) {
|
||||
std::vector<CFGBuilder::Arc> Arcs = {
|
||||
{"1", "2"}, {"2", "3"}, {"3", "4"}, {"4", "5"}, {"5", "6"}, {"5", "7"},
|
||||
{"3", "8"}, {"8", "9"}, {"9", "10"}, {"8", "11"}, {"11", "12"}};
|
||||
|
Loading…
x
Reference in New Issue
Block a user