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*>& getNext() const { return next; }
|
||||||
const std::vector<BasicBlock*>& getPrev() const { return prev; }
|
const std::vector<BasicBlock*>& getPrev() const { return prev; }
|
||||||
BasicBlock* getDom() const
|
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;
|
return directDominator;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -64,6 +64,8 @@ namespace SAPFOR {
|
|||||||
int w = vertex[i];
|
int w = vertex[i];
|
||||||
|
|
||||||
for (BasicBlock* v : vertices[w]->getPrev()) {
|
for (BasicBlock* v : vertices[w]->getPrev()) {
|
||||||
|
if (dfs_num[v] == -1)
|
||||||
|
continue;
|
||||||
int u = Eval(dfs_num[v]);
|
int u = Eval(dfs_num[v]);
|
||||||
|
|
||||||
if (semi[u] < semi[w])
|
if (semi[u] < semi[w])
|
||||||
@@ -97,4 +99,4 @@ namespace SAPFOR {
|
|||||||
void buildDominatorTree(std::vector<BasicBlock*>& blocks) {
|
void buildDominatorTree(std::vector<BasicBlock*>& blocks) {
|
||||||
DominatorFinder finder(blocks);
|
DominatorFinder finder(blocks);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user