Jlm
Loading...
Searching...
No Matches
GammaTests.cpp
Go to the documentation of this file.
1/*
2 * Copyright 2026 Nico Reißmann <nico.reissmann@gmail.com>
3 * See COPYING for terms of redistribution.
4 */
5
6#include <gtest/gtest.h>
7
10#include <jlm/rvsdg/gamma.hpp>
11#include <jlm/rvsdg/view.hpp>
12
13namespace jlm::llvm
14{
15
16TEST(GammaTests, test_predicate_reduction)
17{
18 using namespace jlm::rvsdg;
19
20 // Arrange
21 Graph graph;
22 BitType bits2(2);
23
24 auto v0 = &GraphImport::Create(graph, BitType::Create(32), "");
25 auto v1 = &GraphImport::Create(graph, BitType::Create(32), "");
26 auto v2 = &GraphImport::Create(graph, BitType::Create(32), "");
27
28 auto pred = &ControlConstantOperation::create(graph.GetRootRegion(), 3, 1);
29
30 auto gammaNode = GammaNode::create(pred, 3);
31 auto ev0 = gammaNode->AddEntryVar(v0);
32 auto ev1 = gammaNode->AddEntryVar(v1);
33 auto ev2 = gammaNode->AddEntryVar(v2);
34 gammaNode->AddExitVar({ ev0.branchArgument[0], ev1.branchArgument[1], ev2.branchArgument[2] });
35
36 auto & r = GraphExport::Create(*gammaNode->output(0), "");
37
38 view(&graph.GetRootRegion(), stdout);
39
40 // Act
42 view(&graph.GetRootRegion(), stdout);
43
44 // Assert
45 EXPECT_EQ(r.origin(), v1);
46
47 graph.PruneNodes();
48 EXPECT_EQ(graph.GetRootRegion().numNodes(), 0u);
49}
50
51}
Region & GetRootRegion() const noexcept
Definition graph.hpp:99
void PruneNodes()
Definition graph.hpp:116
size_t numNodes() const noexcept
Definition region.hpp:510
Global memory state passed between functions.
bool reduceStaticallyKnownPredicate(rvsdg::GammaNode &gammaNode)
Definition Gamma.cpp:15
TEST(ControlOperationsTests, foldConstants)