6 #include <gtest/gtest.h>
12 TEST(DeadNodeEliminationTests, TestDeadLoopNode)
23 auto & rvsdg = rvsdgModule.Rvsdg();
26 rvsdg.GetRootRegion(),
34 lambdaNode->finalize({ lambdaNode->GetFunctionArguments()[1] });
40 EXPECT_EQ(lambdaNode->subregion()->numNodes(), 0);
43 TEST(DeadNodeEliminationTests, TestDeadLoopNodeOutput)
54 auto & rvsdg = rvsdgModule.Rvsdg();
57 rvsdg.GetRootRegion(),
63 auto p = lambdaNode->GetFunctionArguments()[0];
64 auto x = lambdaNode->GetFunctionArguments()[1];
69 auto output0 = loopNode->AddLoopVar(p, &buffer);
70 loopNode->AddLoopVar(x);
71 loopNode->set_predicate(buffer);
73 auto lambdaOutput = lambdaNode->finalize({ output0 });
81 EXPECT_EQ(loopNode->noutputs(), 1);
82 EXPECT_EQ(loopNode->ninputs(), 2);
static LoopNode * create(rvsdg::Region *parent, bool init=true)
static std::unique_ptr< LlvmLambdaOperation > Create(std::shared_ptr< const jlm::rvsdg::FunctionType > type, std::string name, const jlm::llvm::Linkage &linkage, jlm::llvm::CallingConvention callingConvention, jlm::llvm::AttributeSet attributes)
static std::shared_ptr< const ControlType > Create(std::size_t nalternatives)
Instantiates control type.
static std::shared_ptr< const FunctionType > Create(std::vector< std::shared_ptr< const jlm::rvsdg::Type >> argumentTypes, std::vector< std::shared_ptr< const jlm::rvsdg::Type >> resultTypes)
static GraphExport & Create(Output &origin, std::string name)
static LambdaNode * Create(rvsdg::Region &parent, std::unique_ptr< LambdaOperation > operation)
static std::shared_ptr< const TestType > createValueType()
TEST(DeadNodeEliminationTests, TestDeadLoopNode)
void EliminateDeadNodes(llvm::LlvmRvsdgModule &rvsdgModule)