26TEST(GraphTests, test_recursive_prune)
30 auto t = TestType::createValueType();
35 auto n1 = TestOperation::createNode(&graph.
GetRootRegion(), { &imp }, { t });
36 auto n2 = TestOperation::createNode(&graph.
GetRootRegion(), { &imp }, { t });
38 auto n3 = TestStructuralNode::create(&graph.
GetRootRegion(), 1);
39 auto input0 = n3->addInputWithArguments(imp);
40 auto & a1 = *n3->addArguments(t).argument[0];
41 auto n4 = TestOperation::createNode(n3->subregion(0), { &a1 }, { t });
42 auto n5 = TestOperation::createNode(n3->subregion(0), { &a1 }, { t });
43 auto o1 = n3->addOutputWithResults({ n4->output(0) });
45 auto n6 = TestStructuralNode::create(n3->subregion(0), 1);
47 GraphExport::Create(*n2->output(0),
"n2");
48 GraphExport::Create(*o1.output,
"n3");
75TEST(GraphTests, test_prune_replace)
79 auto type = TestType::createValueType();
82 auto n1 = TestOperation::createNode(&graph.
GetRootRegion(), {}, { type });
83 auto n2 = TestOperation::createNode(&graph.
GetRootRegion(), { n1->output(0) }, { type });
84 auto n3 = TestOperation::createNode(&graph.
GetRootRegion(), { n2->output(0) }, { type });
86 GraphExport::Create(*n2->output(0),
"n2");
87 GraphExport::Create(*n3->output(0),
"n3");
89 auto n4 = TestOperation::createNode(&graph.
GetRootRegion(), { n1->output(0) }, { type });
91 n2->output(0)->divert_users(n4->output(0));
92 EXPECT_EQ(n2->output(0)->nusers(), 0u);
104 auto valueType = TestType::createValueType();
108 auto node = TestOperation::createNode(&graph.
GetRootRegion(), { &argument }, { valueType });
109 GraphExport::Create(*node->output(0),
"export");
112 auto newGraph = graph.
Copy();
115 EXPECT_EQ(newGraph->GetRootRegion().narguments(), 1u);
116 auto copiedArgument = newGraph->GetRootRegion().argument(0);
117 EXPECT_TRUE(is<jlm::rvsdg::GraphImport>(copiedArgument));
119 EXPECT_EQ(newGraph->GetRootRegion().numNodes(), 1u);
120 auto copiedNode = newGraph->GetRootRegion().Nodes().begin().ptr();
121 EXPECT_EQ(copiedNode->ninputs() == 1 && copiedNode->noutputs(), 1u);
122 EXPECT_EQ(copiedNode->input(0)->origin(), copiedArgument);
124 EXPECT_EQ(newGraph->GetRootRegion().nresults(), 1u);
125 auto copiedResult = newGraph->GetRootRegion().result(0);
126 EXPECT_TRUE(is<jlm::rvsdg::GraphExport>(*copiedResult));
127 EXPECT_EQ(copiedResult->origin(), copiedNode->output(0));