6 #include <gtest/gtest.h>
17 TEST(SinkInsertionTests, SinkInsertion)
29 auto & rvsdg = rvsdgModule.Rvsdg();
32 rvsdg.GetRootRegion(),
34 auto argument = lambdaNode->GetFunctionArguments()[0];
37 const auto inputVar0 = structuralNode->addInputWithArguments(*argument);
38 const auto inputVar1 = structuralNode->addInputWithArguments(*argument);
40 const auto outputVar0 = structuralNode->addOutputWithResults({ inputVar1.argument[0] });
41 const auto outputVar1 = structuralNode->addOutputWithResults({ inputVar1.argument[0] });
43 auto lambdaOutput = lambdaNode->finalize({ outputVar1.output });
55 EXPECT_EQ(structuralNode->subregion(0)->numNodes(), 1);
56 EXPECT_EQ(lambdaNode->subregion()->numNodes(), 2);
60 EXPECT_EQ(outputVar0.output->nusers(), 1);
61 EXPECT_TRUE(IsOwnerNodeOperation<SinkOperation>(*outputVar0.output->Users().begin()));
66 auto & i0Argument = *inputVar0.argument[0];
67 EXPECT_EQ(i0Argument.nusers(), 1);
68 EXPECT_TRUE(IsOwnerNodeOperation<SinkOperation>(*i0Argument.Users().begin()));
static jlm::util::StatisticsCollector statisticsCollector
TEST(SinkInsertionTests, SinkInsertion)
static void CreateAndRun(rvsdg::RvsdgModule &module, util::StatisticsCollector &statisticsCollector)
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 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 TestStructuralNode * create(Region *parent, const size_t numSubregions)
static std::shared_ptr< const TestType > createValueType()
Global memory state passed between functions.
std::string view(const rvsdg::Region *region)