[Dominators] PR42041: Skip nullpointer successors
authorKristof Umann <dkszelethus@gmail.com>
Wed, 3 Jul 2019 11:14:42 +0000 (11:14 +0000)
committerKristof Umann <dkszelethus@gmail.com>
Wed, 3 Jul 2019 11:14:42 +0000 (11:14 +0000)
commit85211c0835731b37c8a943944b5e6c8165c2d6ab
tree49609703d0e66776c2e35aca13b25280e45ea316
parent8df90b843d15c1d60b978609ec05d98921c3e191
[Dominators] PR42041: Skip nullpointer successors

https://bugs.llvm.org/show_bug.cgi?id=42041

In Clang's CFG, we use nullpointers to represent unreachable nodes, for
example, in the included testfile, block B0 is unreachable from block
B1, resulting in a nullpointer dereference somewhere in
llvm::DominatorTreeBase<clang::CFGBlock, false>::recalculate.

This patch fixes this issue by specializing
llvm::DomTreeBuilder::SemiNCAInfo::ChildrenGetter::Get for
clang::CFG to not contain nullpointer successors.

Differential Revision: https://reviews.llvm.org/D62507

llvm-svn: 365026
clang/include/clang/Analysis/Analyses/Dominators.h
clang/test/Analysis/domtest.c
clang/test/Analysis/domtest.cpp [new file with mode: 0644]