forked from OSchip/llvm-project
[LangRef] update according to unwinding support in inline asm
https://reviews.llvm.org/D95745 introduced a new `unwind` keyword for inline assembler expressions. Inline asms marked with the `unwind` keyword allows stack unwinding from inline assembly because the compiler emits unwinding information ("around" the inline asm) as it would for calls/invokes. Unwinding the stack from within non-unwind inline asm may cause UB. Reviewed By: Amanieu Differential Revision: https://reviews.llvm.org/D102642
This commit is contained in:
parent
7d7b72bad7
commit
22f635b1b3
|
@ -4303,9 +4303,20 @@ the only supported dialects. An example is:
|
|||
|
||||
call void asm inteldialect "eieio", ""()
|
||||
|
||||
If multiple keywords appear the '``sideeffect``' keyword must come
|
||||
first, the '``alignstack``' keyword second and the '``inteldialect``'
|
||||
keyword last.
|
||||
In the case that the inline asm might unwind the stack,
|
||||
the '``unwind``' keyword must be used, so that the compiler emits
|
||||
unwinding information:
|
||||
|
||||
.. code-block:: llvm
|
||||
|
||||
call void asm unwind "call func", ""()
|
||||
|
||||
If the inline asm unwinds the stack and isn't marked with
|
||||
the '``unwind``' keyword, the behavior is undefined.
|
||||
|
||||
If multiple keywords appear, the '``sideeffect``' keyword must come
|
||||
first, the '``alignstack``' keyword second, the '``inteldialect``' keyword
|
||||
third and the '``unwind``' keyword last.
|
||||
|
||||
Inline Asm Constraint String
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
Loading…
Reference in New Issue