Go to file
David Majnemer 7e5937b775 [WinEH] Optimize WinEH state stores
32-bit x86 Windows targets use a linked-list of nodes allocated on the
stack, referenced to via thread-local storage.  The personality routine
interprets one of the fields in the node as a 'state number' which
indicates where the personality routine should transfer control.

State transitions are possible only before call-sites which may throw
exceptions.  Our previous scheme had us update the state number before
all call-sites which may throw.

Instead, we can try to minimize the number of times we need to store by
reasoning about the nearest store which dominates the current call-site.
If the last store agrees with the current call-site, then we know that
the state-update is redundant and can be elided.

This is largely straightforward: an RPO walk of the blocks allows us to
correctly forward propagate the information when the function is a DAG.
Currently, loops are not handled optimally and may trigger superfluous
state stores.

Differential Revision: http://reviews.llvm.org/D16763

llvm-svn: 261122
2016-02-17 18:37:11 +00:00
clang Correct more typos in conditional expressions 2016-02-17 17:19:00 +00:00
clang-tools-extra [clang-tidy] Match the type against the get() method we are calling, 2016-02-17 16:13:14 +00:00
compiler-rt [tsan] Fix signal number definitions for FreeBSD 2016-02-17 18:25:27 +00:00
debuginfo-tests New round of fixes for "Always compile debuginfo-tests for the host triple" 2014-10-18 23:47:59 +00:00
libclc Add .gitignore for build directories 2016-02-17 00:27:31 +00:00
libcxx [libcxx] Fix definition of regex_traits::__regex_word on big-endian glibc systems 2016-02-17 13:16:31 +00:00
libcxxabi [libcxxabi] Teach cxa_demangle about Hexagon's long double size 2016-01-20 14:10:23 +00:00
libunwind [AArch64] Fix libunwind build when using GNU assembler 2016-02-11 21:22:57 +00:00
lld [ELF][MIPS] Update test case expectations due changes in MIPS/MC 2016-02-17 12:49:43 +00:00
lldb Revert "Use BKPT instead of UDF for arm/thumb breakpoints" 2016-02-16 15:14:36 +00:00
llgo [llgo] Force exporting __morestack from llgoi 2015-11-27 04:46:46 +00:00
llvm [WinEH] Optimize WinEH state stores 2016-02-17 18:37:11 +00:00
openmp [OMPT] Frame information for openmp taskwait 2016-02-12 12:19:59 +00:00
polly [Refactor] Move isl_ctx into Scop. 2016-02-17 15:49:21 +00:00