diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/CommandGuide/llc.rst | 5 | ||||
-rw-r--r-- | docs/CommandGuide/lli.rst | 6 | ||||
-rw-r--r-- | docs/Passes.rst | 31 |
3 files changed, 6 insertions, 36 deletions
diff --git a/docs/CommandGuide/llc.rst b/docs/CommandGuide/llc.rst index dddcbaed8f..8d5c9ce8f8 100644 --- a/docs/CommandGuide/llc.rst +++ b/docs/CommandGuide/llc.rst @@ -112,11 +112,6 @@ End-user Options optimizations allow the code generator to make use of some instructions which would otherwise not be usable (such as ``fsin`` on X86). -.. option:: --enable-correct-eh-support - - Instruct the **lowerinvoke** pass to insert code for correct exception - handling support. This is expensive and is by default omitted for efficiency. - .. option:: --stats Print statistics recorded by code-generation passes. diff --git a/docs/CommandGuide/lli.rst b/docs/CommandGuide/lli.rst index a9aaf310e1..502fbd6093 100644 --- a/docs/CommandGuide/lli.rst +++ b/docs/CommandGuide/lli.rst @@ -190,12 +190,6 @@ CODE GENERATION OPTIONS -**-enable-correct-eh-support** - - Make the -lowerinvoke pass insert expensive, but correct, EH code. - - - **-jit-enable-eh** Exception handling should be enabled in the just-in-time compiler. 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 ----------------------------------------------------- |