6 #include <gtest/gtest.h>
11 TEST(ControlFlowGraphOrderTests, test)
25 bb0->add_outedge(bb1);
26 bb0->add_outedge(bb2);
27 bb1->add_outedge(bb3);
28 bb2->add_outedge(bb3);
29 bb3->add_outedge(cfg.
exit());
32 std::vector<ControlFlowGraphNode *> po1({ cfg.
exit(), bb3, bb2, bb1, bb0, cfg.
entry() });
33 std::vector<ControlFlowGraphNode *> po2({ cfg.
exit(), bb3, bb1, bb2, bb0, cfg.
entry() });
36 std::vector<ControlFlowGraphNode *> rpo1({ cfg.
entry(), bb0, bb1, bb2, bb3, cfg.
exit() });
37 std::vector<ControlFlowGraphNode *> rpo2({ cfg.
entry(), bb0, bb2, bb1, bb3, cfg.
exit() });
TEST(ControlFlowGraphOrderTests, test)
static BasicBlock * create(ControlFlowGraph &cfg)
void divert_inedges(llvm::ControlFlowGraphNode *new_successor)
EntryNode * entry() const noexcept
ExitNode * exit() const noexcept
Global memory state passed between functions.
std::vector< ControlFlowGraphNode * > postorder(const ControlFlowGraph &cfg)
std::vector< ControlFlowGraphNode * > reverse_postorder(const ControlFlowGraph &cfg)