1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 20:23:11 +01:00
llvm-mirror/test/CodeGen
David Majnemer a2ed036c0a [WinEH] Let cleanups post-dominated by unreachable get executed
Cleanups in C++ are a little weird.  They are only guaranteed to be
reliably executed if, and only if, there is a viable catch handler which
can handle the exception.

This means that reachability of a cleanup is lexically determined by it
being nested with a try-block which unwinds to a catch.  It is *cannot*
be reasoned about by examining the control flow edges leaving a cleanup.

Usually this is not a problem.  It becomes a problem when there are *no*
edges out of a cleanup because we believed that code post-dominated by
the cleanup is dead.  In LLVM's case, this code is what informs the
personality routine about the presence of a suitable catch handler.
However, the lack of edges to that catch handler makes the handler
become unreachable which causes us to remove it.  By removing the
handler, the cleanup becomes unreachable.

Instead, inject a catch-all handler with every cleanup that has no
unwind edges.  This will allow us to properly unwind the stack.

This fixes PR25997.

llvm-svn: 258580
2016-01-22 23:20:43 +00:00
..
AArch64 [AArch64] Cleanup ccmp test check labels. NFC. 2016-01-22 20:02:26 +00:00
AMDGPU AMDGPU: Add new name for barrier intrinsic 2016-01-22 21:30:43 +00:00
ARM [SelectionDAG] CSE nodes with differing SDNodeFlags 2016-01-15 21:56:40 +00:00
BPF
CPP
Generic Unxfail passing testcase on Hexagon 2016-01-14 15:24:15 +00:00
Hexagon [Hexagon] Use general purpose registers to spill pred/mod registers into 2016-01-22 19:15:58 +00:00
Inputs
Mips
MIR Reapply r257105 "[Verifier] Check that debug values have proper size" 2016-01-15 00:46:17 +00:00
MSP430
NVPTX [NVPTX] expand mul_lohi to mul_lo and mul_hi 2016-01-22 19:47:26 +00:00
PowerPC [PowerPC] Fix large code model with the ELFv2 ABI 2016-01-13 13:12:23 +00:00
SPARC
SystemZ
Thumb
Thumb2
WebAssembly [SelectionDAG] Fold more offsets into GlobalAddresses 2016-01-22 03:57:34 +00:00
WinEH [WinEH] Let cleanups post-dominated by unreachable get executed 2016-01-22 23:20:43 +00:00
X86 fixed to test features, not CPU models 2016-01-22 22:20:56 +00:00
XCore [SelectionDAG] Fold more offsets into GlobalAddresses 2016-01-22 03:57:34 +00:00