forked from OSchip/llvm-project
7e5937b775
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 |
||
---|---|---|
.. | ||
lit.local.cfg | ||
wineh-cloning.ll | ||
wineh-demotion.ll | ||
wineh-intrinsics-invalid.ll | ||
wineh-intrinsics.ll | ||
wineh-no-demotion.ll | ||
wineh-noret-cleanup.ll | ||
wineh-statenumbering-cleanups.ll | ||
wineh-statenumbering.ll |