-<dt><tt>alwaysinline</tt></dt>
-<dd>This attribute indicates that the inliner should attempt to inline this
-function into callers whenever possible, ignoring any active inlining size
-threshold for this caller.</dd>
-
-<dt><tt>noinline</tt></dt>
-<dd>This attribute indicates that the inliner should never inline this function
-in any situation. This attribute may not be used together with the
-<tt>alwaysinline</tt> attribute.</dd>
-
-<dt><tt>optsize</tt></dt>
-<dd>This attribute suggests that optimization passes and code generator passes
-make choices that keep the code size of this function low, and otherwise do
-optimizations specifically to reduce code size.</dd>
-
-<dt><tt>noreturn</tt></dt>
-<dd>This function attribute indicates that the function never returns normally.
-This produces undefined behavior at runtime if the function ever does
-dynamically return.</dd>
-
-<dt><tt>nounwind</tt></dt>
-<dd>This function attribute indicates that the function never returns with an
-unwind or exceptional control flow. If the function does unwind, its runtime
-behavior is undefined.</dd>
-
-<dt><tt>readnone</tt></dt>
-<dd>This attribute indicates that the function computes its result (or the
-exception it throws) based strictly on its arguments, without dereferencing any
-pointer arguments or otherwise accessing any mutable state (e.g. memory, control
-registers, etc) visible to caller functions. It does not write through any
-pointer arguments (including <tt><a href="#byval">byval</a></tt> arguments) and
-never changes any state visible to callers.</dd>
-
-<dt><tt><a name="readonly">readonly</a></tt></dt>
-<dd>This attribute indicates that the function does not write through any
-pointer arguments (including <tt><a href="#byval">byval</a></tt> arguments)
-or otherwise modify any state (e.g. memory, control registers, etc) visible to
-caller functions. It may dereference pointer arguments and read state that may
-be set in the caller. A readonly function always returns the same value (or
-throws the same exception) when called with the same set of arguments and global
-state.</dd>
-
-<dt><tt><a name="ssp">ssp</a></tt></dt>
-<dd>This attribute indicates that the function should emit a stack smashing
-protector. It is in the form of a "canary"—a random value placed on the
-stack before the local variables that's checked upon return from the function to
-see if it has been overwritten. A heuristic is used to determine if a function
-needs stack protectors or not.</dd>
-
-<dt><tt>ssp-req</tt></dt>
-<dd>This attribute indicates that the function should <em>always</em> emit a
-stack smashing protector. This overrides the <tt><a href="#ssp">ssp</a></tt>
-function attribute.</dd>
+ <dt><tt>alwaysinline</tt></dt>
+ <dd>This attribute indicates that the inliner should attempt to inline this
+ function into callers whenever possible, ignoring any active inlining size
+ threshold for this caller.</dd>
+
+ <dt><tt>noinline</tt></dt>
+ <dd>This attribute indicates that the inliner should never inline this
+ function in any situation. This attribute may not be used together with
+ the <tt>alwaysinline</tt> attribute.</dd>
+
+ <dt><tt>optsize</tt></dt>
+ <dd>This attribute suggests that optimization passes and code generator passes
+ make choices that keep the code size of this function low, and otherwise
+ do optimizations specifically to reduce code size.</dd>
+
+ <dt><tt>noreturn</tt></dt>
+ <dd>This function attribute indicates that the function never returns
+ normally. This produces undefined behavior at runtime if the function
+ ever does dynamically return.</dd>
+
+ <dt><tt>nounwind</tt></dt>
+ <dd>This function attribute indicates that the function never returns with an
+ unwind or exceptional control flow. If the function does unwind, its
+ runtime behavior is undefined.</dd>
+
+ <dt><tt>readnone</tt></dt>
+ <dd>This attribute indicates that the function computes its result (or decides
+ to unwind an exception) based strictly on its arguments, without
+ dereferencing any pointer arguments or otherwise accessing any mutable
+ state (e.g. memory, control registers, etc) visible to caller functions.
+ It does not write through any pointer arguments
+ (including <tt><a href="#byval">byval</a></tt> arguments) and never
+ changes any state visible to callers. This means that it cannot unwind
+ exceptions by calling the <tt>C++</tt> exception throwing methods, but
+ could use the <tt>unwind</tt> instruction.</dd>
+
+ <dt><tt><a name="readonly">readonly</a></tt></dt>
+ <dd>This attribute indicates that the function does not write through any
+ pointer arguments (including <tt><a href="#byval">byval</a></tt>
+ arguments) or otherwise modify any state (e.g. memory, control registers,
+ etc) visible to caller functions. It may dereference pointer arguments
+ and read state that may be set in the caller. A readonly function always
+ returns the same value (or unwinds an exception identically) when called
+ with the same set of arguments and global state. It cannot unwind an
+ exception by calling the <tt>C++</tt> exception throwing methods, but may
+ use the <tt>unwind</tt> instruction.</dd>
+
+ <dt><tt><a name="ssp">ssp</a></tt></dt>
+ <dd>This attribute indicates that the function should emit a stack smashing
+ protector. It is in the form of a "canary"—a random value placed on
+ the stack before the local variables that's checked upon return from the
+ function to see if it has been overwritten. A heuristic is used to
+ determine if a function needs stack protectors or not.<br>
+<br>
+ If a function that has an <tt>ssp</tt> attribute is inlined into a
+ function that doesn't have an <tt>ssp</tt> attribute, then the resulting
+ function will have an <tt>ssp</tt> attribute.</dd>
+
+ <dt><tt>sspreq</tt></dt>
+ <dd>This attribute indicates that the function should <em>always</em> emit a
+ stack smashing protector. This overrides
+ the <tt><a href="#ssp">ssp</a></tt> function attribute.<br>
+<br>
+ If a function that has an <tt>sspreq</tt> attribute is inlined into a
+ function that doesn't have an <tt>sspreq</tt> attribute or which has
+ an <tt>ssp</tt> attribute, then the resulting function will have
+ an <tt>sspreq</tt> attribute.</dd>
+
+ <dt><tt>noredzone</tt></dt>
+ <dd>This attribute indicates that the code generator should not use a red
+ zone, even if the target-specific ABI normally permits it.</dd>
+
+ <dt><tt>noimplicitfloat</tt></dt>
+ <dd>This attributes disables implicit floating point instructions.</dd>
+
+ <dt><tt>naked</tt></dt>
+ <dd>This attribute disables prologue / epilogue emission for the function.
+ This can have very system-specific consequences.</dd>