summaryrefslogtreecommitdiff
path: root/docs/Passes.rst
diff options
context:
space:
mode:
authorMark Seaborn <mseaborn@chromium.org>2014-03-20 19:54:47 +0000
committerMark Seaborn <mseaborn@chromium.org>2014-03-20 19:54:47 +0000
commit9bb9615e1fd8e3d2654d3fe394ee6f486a0cb8a5 (patch)
treed1baa3bc6eb39e5dfb5656dac0c443b0aed83b69 /docs/Passes.rst
parent56210e69eb3e26cd62391055e2054bf34342c119 (diff)
downloadllvm-9bb9615e1fd8e3d2654d3fe394ee6f486a0cb8a5.tar.gz
llvm-9bb9615e1fd8e3d2654d3fe394ee6f486a0cb8a5.tar.bz2
llvm-9bb9615e1fd8e3d2654d3fe394ee6f486a0cb8a5.tar.xz
Remove LowerInvoke's obsolete "-enable-correct-eh-support" option
This option caused LowerInvoke to generate code using SJLJ-based exception handling, but there is no code left that interprets the jmp_buf stack that the resulting code maintained (llvm.sjljeh.jblist). This option has been obsolete for a while, and replaced by SjLjEHPrepare. This leaves the default behaviour of LowerInvoke, which is to convert invokes to calls. Differential Revision: http://llvm-reviews.chandlerc.com/D3136 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@204388 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'docs/Passes.rst')
-rw-r--r--docs/Passes.rst31
1 files changed, 6 insertions, 25 deletions
diff --git a/docs/Passes.rst b/docs/Passes.rst
index 029e472bcd..a288933b7b 100644
--- a/docs/Passes.rst
+++ b/docs/Passes.rst
@@ -893,33 +893,14 @@ this would require knowledge of the entire call graph of the program including
any libraries which may not be available in bitcode form); it simply lowers
every atomic intrinsic.
-``-lowerinvoke``: Lower invoke and unwind, for unwindless code generators
--------------------------------------------------------------------------
+``-lowerinvoke``: Lower invokes to calls, for unwindless code generators
+------------------------------------------------------------------------
This transformation is designed for use by code generators which do not yet
-support stack unwinding. This pass supports two models of exception handling
-lowering, the "cheap" support and the "expensive" support.
-
-"Cheap" exception handling support gives the program the ability to execute any
-program which does not "throw an exception", by turning "``invoke``"
-instructions into calls and by turning "``unwind``" instructions into calls to
-``abort()``. If the program does dynamically use the "``unwind``" instruction,
-the program will print a message then abort.
-
-"Expensive" exception handling support gives the full exception handling
-support to the program at the cost of making the "``invoke``" instruction
-really expensive. It basically inserts ``setjmp``/``longjmp`` calls to emulate
-the exception handling as necessary.
-
-Because the "expensive" support slows down programs a lot, and EH is only used
-for a subset of the programs, it must be specifically enabled by the
-``-enable-correct-eh-support`` option.
-
-Note that after this pass runs the CFG is not entirely accurate (exceptional
-control flow edges are not correct anymore) so only very simple things should
-be done after the ``lowerinvoke`` pass has run (like generation of native
-code). This should not be used as a general purpose "my LLVM-to-LLVM pass
-doesn't support the ``invoke`` instruction yet" lowering pass.
+support stack unwinding. This pass converts ``invoke`` instructions to
+``call`` instructions, so that any exception-handling ``landingpad`` blocks
+become dead code (which can be removed by running the ``-simplifycfg`` pass
+afterwards).
``-lowerswitch``: Lower ``SwitchInst``\ s to branches
-----------------------------------------------------