diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -1953,6 +1953,18 @@ the function. The instrumentation checks that the return address for the function has not changed between the function prolog and epilog. It is currently x86_64-specific. +``mustprogress`` + This attribute indicates that the function is required to return, unwind, + or interact with the environment in an observable way e.g. via a + volatile memory access, I/O, or other synchronization. + The ``mustprogress`` attribute is intended to model the + requirements of the first section of `[intro.progress] of the C++ + Standard `_. If a `mustprogress` + function does not satisfy this contract, the behavior is undefined. A + non-interacting loop in a such a function is assumed to terminate, + and may be removed. This attribute does not apply transitively to callees, + but does apply for call sites within the function. Note that `willreturn` + implies `mustprogress`. Call Site Attributes ----------------------