1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00

[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:
cynecx 2021-05-31 09:00:35 +01:00 committed by Amanieu d'Antras
parent f98f660050
commit be221f0b41

View File

@ -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
^^^^^^^^^^^^^^^^^^^^^^^^^^^^