diff options
| author | Francis Visoiu Mistrih <fvisoiumistrih@apple.com> | 2017-05-15 23:13:35 +0000 |
|---|---|---|
| committer | Francis Visoiu Mistrih <fvisoiumistrih@apple.com> | 2017-05-15 23:13:35 +0000 |
| commit | ebbc7159e9b2bee125e819b8da3452fb6b3d5b53 (patch) | |
| tree | 3e187be16e1c9b7b87c59ece6db1a0dccf118d37 /llvm/lib/Analysis/ScalarEvolutionExpander.cpp | |
| parent | cbb1fdf350bcac9b7b8618e431dfe0b5309fbefe (diff) | |
| download | bcm5719-llvm-ebbc7159e9b2bee125e819b8da3452fb6b3d5b53.tar.gz bcm5719-llvm-ebbc7159e9b2bee125e819b8da3452fb6b3d5b53.zip | |
[ShrinkWrapping] Handle restores on no-return paths
Shrink-wrapping uses post-dominators to find a restore point that
post-dominates all the uses of CSR / stack.
The way dominator trees are modeled in LLVM today is that unreachable
blocks are not present in a generic dominator tree, so, an unreachable node is
dominated by anything: include/llvm/Support/GenericDomTree.h:467.
Since for post-dominators, a no-return block is considered
"unreachable", calling findNearestCommonDominator on an unreachable node
A and a non-unreachable node B, will return B, which can be false. If we
find such node, we bail out since there is no good restore point
available.
rdar://problem/30186931
llvm-svn: 303130
Diffstat (limited to 'llvm/lib/Analysis/ScalarEvolutionExpander.cpp')
0 files changed, 0 insertions, 0 deletions

