Completely rewrite 'correct' eh support. This changes how setjmp insertion
authorChris Lattner <sabre@nondot.org>
Tue, 27 Sep 2005 21:18:17 +0000 (21:18 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 27 Sep 2005 21:18:17 +0000 (21:18 +0000)
commitf4e6c3a69b3cf3a381811900c0f3768f626e90b8
treecc21a8b71d17292877f51bf2d2095bddfd2494c2
parentfe15830f962bb7fef046203a77d438d087772b34
Completely rewrite 'correct' eh support.  This changes how setjmp insertion
is performed so it is only at most once per function that contains an invoke
instead of once per invoke in the function.  This patch has the following perks:

1. It fixes PR631, which complains about slowness.
2. If fixes PR240, which complains about non-volatile vars being live across
   setjmp/longjmps.
3. It improves (but does not fix) the jmpbuf alignment issue on itanium by not
   forcing the jmpbufs to always be 8-bytes off the alignment of the structure.
4. It speeds up 253.perlbmk from 338s to 13.70s (a 25x improvement!), making us
   now about 4% faster than GCC.

Further improvements are also possible.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23477 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/Utils/LowerInvoke.cpp