Please use GitHub pull requests for new patches. Phabricator shutdown timeline
Changeset View
Changeset View
Standalone View
Standalone View
docs/LangRef.rst
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 1,444 Lines • ▼ Show 20 Lines | ``noduplicate`` | ||||
within its parent function, but may not be duplicated within | within its parent function, but may not be duplicated within | ||||
its parent function. | its parent function. | ||||
A function containing a ``noduplicate`` call may still | A function containing a ``noduplicate`` call may still | ||||
be an inlining candidate, provided that the call is not | be an inlining candidate, provided that the call is not | ||||
duplicated by inlining. That implies that the function has | duplicated by inlining. That implies that the function has | ||||
internal linkage and only has one call site, so the original | internal linkage and only has one call site, so the original | ||||
call is dead after inlining. | call is dead after inlining. | ||||
``nofree`` | |||||
This function attribute indicates that the function does not, directly or | |||||
indirectly, call a memory-deallocation function (free, for example). As a | |||||
result, uncaptured pointers that are known to be dereferenceable prior to a | |||||
efriedma: The "uncaptured" bit makes this useless for D48239; we have to assume any argument that isn't… | |||||
Not Done ReplyInline ActionsI agree. In the RFC I just sent out a few seconds ago, I proposed a different solution (to also have a nosynch attribute). hfinkel: I agree. In the RFC I just sent out a few seconds ago, I proposed a different solution (to also… | |||||
call to a function with the ``nofree`` attribute are still known to be | |||||
dereferenceable after the call (the capturing condition is necessary in | |||||
environments where the function might communicate the pointer to another thread | |||||
which then deallocates the memory). | |||||
jdoerfertUnsubmitted Not Done ReplyInline ActionsThe question now is, do we want nofree to be orthogonal to nosync or not? I'd prefer yes but it can confuse people so we should add language here to make that explicit. jdoerfert: The question now is, do we want `nofree` to be orthogonal to `nosync` or not? I'd prefer yes… | |||||
``noimplicitfloat`` | ``noimplicitfloat`` | ||||
This attributes disables implicit floating-point instructions. | This attributes disables implicit floating-point instructions. | ||||
``noinline`` | ``noinline`` | ||||
This attribute indicates that the inliner should never inline this | This attribute indicates that the inliner should never inline this | ||||
function in any situation. This attribute may not be used together | function in any situation. This attribute may not be used together | ||||
with the ``alwaysinline`` attribute. | with the ``alwaysinline`` attribute. | ||||
``nonlazybind`` | ``nonlazybind`` | ||||
This attribute suppresses lazy symbol binding for the function. This | This attribute suppresses lazy symbol binding for the function. This | ||||
▲ Show 20 Lines • Show All 15,754 Lines • Show Last 20 Lines |
The "uncaptured" bit makes this useless for D48239; we have to assume any argument that isn't noalias is captured.