<div dir="ltr"><div>Hello,</div><div><br></div><div>I was wondering what is the semantic of the carries_dependency attribute.</div><div><br></div><div>On <a href="https://clang.llvm.org/docs/AttributeReference.html#carries-dependency">https://clang.llvm.org/docs/AttributeReference.html#carries-dependency</a> it says some suspicious things to me (but I am probably interpreting that wrong, sorry about that):</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><p>The <code class="gmail-docutils gmail-literal"><span class="gmail-pre">carries_dependency</span></code> attribute specifies dependency propagation into and
out of functions.</p></blockquote><div>Where can it be placed? (on function declaration and/or definition?)</div><div>What are its parameters? (none?)</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<p>When specified on a function or Objective-C method, the <code class="gmail-docutils gmail-literal"><span class="gmail-pre">carries_dependency</span></code>
attribute means that the return value carries a dependency out of the function,
so that the implementation need not constrain ordering upon return from that
function.</p></blockquote><div>I was under the impression that a dependency was an ordering constraint we want to enforce... What are we trying to say here?  </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><p>Implementations of the function and its caller may choose to preserve
dependencies instead of emitting memory ordering instructions such as fences.</p></blockquote><div>So, if that attribute is not here, we do not need to preserve dependencies as long as we emit a memory ordering instruction?</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<p>Note, this attribute does not change the meaning of the program, but may result
in generation of more efficient code.</p></blockquote><div>I am almost certain of missing something here, else it does not make sense...</div><div><br></div><div>Help?</div><div><br></div>-- <br><div class="gmail_signature"><div dir="ltr"><b>Alexandre Isoard</b><br></div></div>
</div>