mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-22 07:24:47 +00:00
Fix dominator descendants for unreachable blocks.
When a block is unreachable, asking its dom tree descendants should return the empty set. However, the computation of the descendants was causing a segmentation fault because the dom tree node we get from the basic block is initially NULL. Fixed by adding a test for a valid dom tree node before we iterate. The patch also adds some unit tests to the existing dom tree tests. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@196099 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -348,10 +348,12 @@ public:
|
||||
|
||||
/// Get all nodes dominated by R, including R itself.
|
||||
void getDescendants(NodeT *R, SmallVectorImpl<NodeT *> &Result) const {
|
||||
Result.clear();
|
||||
const DomTreeNodeBase<NodeT> *RN = getNode(R);
|
||||
if (RN == NULL)
|
||||
return; // If R is unreachable, it will not be present in the DOM tree.
|
||||
SmallVector<const DomTreeNodeBase<NodeT> *, 8> WL;
|
||||
WL.push_back(RN);
|
||||
Result.clear();
|
||||
|
||||
while (!WL.empty()) {
|
||||
const DomTreeNodeBase<NodeT> *N = WL.pop_back_val();
|
||||
|
Reference in New Issue
Block a user