26 for (
const auto & tac : tacs)
29 return "[" + str +
"]";
35 const auto & node = *util::assertedCast<const FunctionNode>(&clg_node);
37 const auto & fcttype = node.fcttype();
40 std::string results(
"<");
41 for (
size_t n = 0; n < fcttype.NumResults(); n++)
43 results += fcttype.ResultType(n).debug_string();
44 if (n != fcttype.NumResults() - 1)
51 for (
size_t n = 0; n < fcttype.NumArguments(); n++)
53 operands += fcttype.ArgumentType(n).debug_string();
54 if (n != fcttype.NumArguments() - 1)
62 return exported + results +
" " + node.name() +
" " +
operands +
"\n{\n" + cfg +
"\n}\n";
68 const auto & node = *util::assertedCast<const DataNode>(&clg_node);
69 auto init = node.initialization();
71 std::string str = node.name();
87 for (
const auto & node : clg)
89 JLM_ASSERT(map.find(
typeid(node)) != map.end());
90 str += map[
typeid(node)](node) +
"\n";
104 std::string subtree(depth,
'-');
110 for (
const auto & child : n)
111 subtree += f(child, depth + 1);
122 fputs(
to_str(n, dm).c_str(), out);
virtual std::string debug_string() const =0
T & Lookup(const AggregationNode &aggregationNode) const noexcept
bool Contains(const AggregationNode &aggregationNode) const noexcept
static std::string ToAscii(const ControlFlowGraph &controlFlowGraph)
static std::string ToAscii(const ThreeAddressCode &threeAddressCode)
Global memory state passed between functions.
static std::string emit_data_node(const InterProceduralGraphNode &clg_node)
static std::string emit_tacs(const tacsvector_t &tacs)
std::vector< std::unique_ptr< llvm::ThreeAddressCode > > tacsvector_t
void print(const AggregationNode &n, const AnnotationMap &dm, FILE *out)
bool isPrivateOrInternal(const Linkage linkage)
std::string to_str(const InterProceduralGraph &clg)
static std::string emit_function_node(const InterProceduralGraphNode &clg_node)
static std::vector< jlm::rvsdg::Output * > operands(const Node *node)