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/test/CodeGen/Thumb2 | |
| 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/test/CodeGen/Thumb2')
| -rw-r--r-- | llvm/test/CodeGen/Thumb2/v8_IT_5.ll | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/test/CodeGen/Thumb2/v8_IT_5.ll b/llvm/test/CodeGen/Thumb2/v8_IT_5.ll index d8d60413cb0..5e7a40299ed 100644 --- a/llvm/test/CodeGen/Thumb2/v8_IT_5.ll +++ b/llvm/test/CodeGen/Thumb2/v8_IT_5.ll @@ -9,7 +9,7 @@ ; CHECK-NEXT: b ; CHECK: [[JUMPTARGET]]:{{.*}}%if.else173 ; CHECK-NEXT: mov.w -; CHECK-NEXT: bx lr +; CHECK-NEXT: pop ; CHECK-NEXT: %if.else145 ; CHECK-NEXT: mov.w |

