1#pragma once
2
3#ifndef _TRITON_IR_CFG_H_
4#define _TRITON_IR_CFG_H_
5
6#include <vector>
7#include <functional>
8
9namespace triton{
10namespace ir{
11
12class module;
13class function;
14class basic_block;
15class instruction;
16class value;
17
18class cfg {
19public:
20 static std::vector<basic_block *> post_order(function* fn);
21 static std::vector<basic_block *> reverse_post_order(function* fn);
22};
23
24void for_each_instruction(ir::module& mod, const std::function<void(triton::ir::instruction*)> &fn);
25void for_each_instruction_backward(module &mod, const std::function<void (instruction *)> &do_work);
26void for_each_value(ir::module& mod, const std::function<void(triton::ir::value *)> &fn);
27
28}
29}
30
31#endif
32