fix UB in dom tree builder
This commit is contained in:
@@ -73,13 +73,7 @@ namespace SAPFOR
|
||||
const std::vector<BasicBlock*>& getNext() const { return next; }
|
||||
const std::vector<BasicBlock*>& getPrev() const { return prev; }
|
||||
BasicBlock* getDom() const
|
||||
{
|
||||
if (!directDominator)
|
||||
{
|
||||
__spf_print(1, "%s\n", "the dominator tree was built with an error or was not built at all");
|
||||
printInternalError(convertFileName(__FILE__).c_str(), __LINE__);
|
||||
}
|
||||
|
||||
{
|
||||
return directDominator;
|
||||
}
|
||||
|
||||
|
||||
@@ -64,6 +64,8 @@ namespace SAPFOR {
|
||||
int w = vertex[i];
|
||||
|
||||
for (BasicBlock* v : vertices[w]->getPrev()) {
|
||||
if (dfs_num[v] == -1)
|
||||
continue;
|
||||
int u = Eval(dfs_num[v]);
|
||||
|
||||
if (semi[u] < semi[w])
|
||||
@@ -97,4 +99,4 @@ namespace SAPFOR {
|
||||
void buildDominatorTree(std::vector<BasicBlock*>& blocks) {
|
||||
DominatorFinder finder(blocks);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user