jak-project/decompiler/Function/BasicBlocks.h

34 lines
761 B
C
Raw Permalink Normal View History

#pragma once
2020-08-22 23:30:17 -04:00
#include <memory>
#include <vector>
2020-08-22 23:30:17 -04:00
2021-01-12 19:20:08 -05:00
// for RegSet:
#include "decompiler/analysis/reg_usage.h"
2020-08-22 23:30:17 -04:00
namespace decompiler {
2020-08-22 23:30:17 -04:00
class LinkedObjectFile;
class Function;
struct BasicBlock {
int start_word;
int end_word;
2020-11-27 16:38:36 -05:00
std::string label_name;
2020-08-22 23:30:17 -04:00
std::vector<int> pred;
int succ_ft = -1;
int succ_branch = -1;
2020-08-22 23:30:17 -04:00
BasicBlock(int _start_word, int _end_word) : start_word(_start_word), end_word(_end_word) {}
};
struct BlockTopologicalSort {
std::vector<int> vist_order;
std::unordered_set<int> unreachable;
};
2020-08-22 23:30:17 -04:00
std::vector<BasicBlock> find_blocks_in_function(const LinkedObjectFile& file,
int seg,
const Function& func);
} // namespace decompiler