1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/test
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
..
Analysis
Assembler Fix constant folding of constant vector GEPs with undef or null as pointer argument. 2016-01-19 16:34:31 +00:00
Bindings
Bitcode
BugPoint
CodeGen [WinEH] Let cleanups post-dominated by unreachable get executed 2016-01-22 23:20:43 +00:00
DebugInfo Write AArch64 big endian data fixup entries as BE. 2016-01-20 15:59:14 +00:00
Examples
ExecutionEngine [RuntimeDyld][AArch64] Add support for the MachO ARM64_RELOC_SUBTRACTOR reloc. 2016-01-21 21:59:50 +00:00
Feature MachineScheduler: Honor optnone functions in the pre-ra scheduler. 2016-01-20 22:38:25 +00:00
FileCheck
Instrumentation
Integer
JitListener
LibDriver
Linker Revert obsolete llvm-link -preserve-modules option/test 2016-01-21 14:28:52 +00:00
LTO [LTO] Restore original linkage of externals prior to splitting 2016-01-18 23:24:54 +00:00
MC [mips] Allowed dla instructions on 32-bit architectures. 2016-01-21 15:11:01 +00:00
Object Fix the code that leads to the incorrect trigger of the report_fatal_error() 2016-01-22 22:49:55 +00:00
Other
SymbolRewriter
TableGen [GlobalISel] Add a generic machine opcode for ADD. 2016-01-20 19:14:55 +00:00
tools re-submit test case (withright format-version) 2016-01-21 02:35:59 +00:00
Transforms AMDGPU: Rename intrinsics to use amdgcn prefix 2016-01-22 21:30:34 +00:00
Unit
Verifier Add a "gc-transition" operand bundle 2016-01-20 19:50:25 +00:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh