34 auto out = node->output(0);
35 std::vector<jlm::rvsdg::Input *>
old_users;
36 for (
auto &
user :
out->Users())
50 auto & graph =
rm.Rvsdg();
51 auto root = &graph.GetRootRegion();
58 auto & graph =
rm.Rvsdg();
59 auto root = &graph.GetRootRegion();
76 const std::shared_ptr<const rvsdg::FunctionType> &
functionType)
87 else if (
auto po =
dynamic_cast<const PrintOperation *
>(&(node->GetOperation())))
95 auto bt = std::dynamic_pointer_cast<const rvsdg::BitType>(
val->Type());
100 node->output(0)->divert_users(node->input(0)->origin());
static std::vector< jlm::rvsdg::Output * > create(jlm::rvsdg::Output &value)
static std::vector< rvsdg::Output * > Create(rvsdg::Output *function, std::shared_ptr< const rvsdg::FunctionType > functionType, const std::vector< rvsdg::Output * > &arguments)
static rvsdg::Node & Create(rvsdg::Region ®ion, IntegerValueRepresentation representation)
static LlvmGraphImport & createFunctionImport(rvsdg::Graph &graph, std::shared_ptr< const rvsdg::FunctionType > functionType, std::string name, Linkage linkage, CallingConvention callingConvention)
static rvsdg::Output & create(size_t ndstbits, rvsdg::Output &operand)
static std::shared_ptr< const BitType > Create(std::size_t nbits)
Creates bit type of specified width.
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)
size_t noutputs() const noexcept
Represent acyclic RVSDG subgraphs.
void convert_prints(llvm::LlvmRvsdgModule &rm)
void add_prints(rvsdg::Region *region)
static void remove(Node *node)
Output & RouteToRegion(Output &output, Region ®ion)
NodeType * TryGetOwnerNode(const rvsdg::Input &input) noexcept
Checks if this is an input to a node of specified type.
detail::TopDownTraverserGeneric< false > TopDownTraverser
Traverser for visiting every node in a region in a top down order.