<div dir="ltr"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">What's special about non-externally visible inline functions? </span></blockquote>

<div><br></div><div>They are not available to other translation units. However, if you take a pointer to a non-externally visible inline function the compiler should not remove the function. That is, even if the instrumentation call backs are part of a different TU, passing a function pointer to them should just work. </div>

<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">If you look at if it's inline specified in the frontend, that doesn't tell you if it actually gets inlined.</span></blockquote>

<div><br></div><div>Indeed. Furthermore, AFAIK the instrumentation callbacks are pushed before and after the function call site. That is, it doesn't matter if the function gets inlined or not. </div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<span style="font-family:arial,sans-serif;font-size:12.800000190734863px">And finally, what's wrong with the linker such that it can't resolve the address of an internal inline function?  That seems like a perfectly reasonable thing for it to be able to do.  If you take the address of a function, the compiler should make sure not to delete the definition.</span><br>

</blockquote><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">You're right. Passing a function pointer to the instrumentation call backs prevents the compiler from removing the function. That is, the linker can resolve the address in all cases.</font></div>

<div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">This patch still doesn't make sense to me.</span></blockquote>

<div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Indeed. </span><span style="font-family:arial,sans-serif;font-size:12.800000190734863px">Thank you a lot for taking your time to review it.</span></div>


</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Dec 3, 2013 at 7:35 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:rnk@google.com" target="_blank">rnk@google.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div>
<div dir="ltr">
<div>I made sure to CC your directly on the reply, FWIW.</div>
<div><br>
</div>
<div>This patch still doesn't make sense to me.  What's special about non-externally visible inline functions?  If you look at if it's inline specified in the frontend, that doesn't tell you if it actually gets inlined.  Why doesn't this apply to static functions
 that get inlined and aren't inline-specified?</div>
<div><br>
</div>
<div>And finally, what's wrong with the linker such that it can't resolve the address of an internal inline function?  That seems like a perfectly reasonable thing for it to be able to do.  If you take the address of a function, the compiler should make sure
 not to delete the definition.</div>
</div>
<div class="gmail_extra"><br>
<br>
<div class="gmail_quote"><div><div class="h5">On Tue, Dec 3, 2013 at 3:05 AM, Gonzalo Brito Gadeschi <span dir="ltr">
<<a href="mailto:g.brito@aia.rwth-aachen.de" target="_blank">g.brito@aia.rwth-aachen.de</a>></span> wrote:<br>
</div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">
<div dir="ltr">
<pre><div><font color="#000000"><span style="white-space:pre-wrap">From: <a href="http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20131125/094256.html" target="_blank">http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20131125/094256.html</a><br>




</span></font></div><div style="white-space:pre-wrap"> </div><blockquote class="gmail_quote" style="padding-left:1ex;border-left-color:rgb(204,204,204);border-left-style:solid;white-space:pre-wrap;margin:0px 0px 0px 0.8ex;border-left-width:1px">




I've tried to ask you twice to explain why this is necessary:<br></blockquote><div style="white-space:pre-wrap"><br></div><div style="white-space:pre-wrap"><pre style="white-space:pre-wrap">Sorry, I was not subscribed to the list and was not getting any replies. I should be able to reply from now on.</pre>

</div><div style="white-space:pre-wrap"> </div><blockquote class="gmail_quote" style="padding-left:1ex;border-left-color:rgb(204,204,204);border-left-style:solid;white-space:pre-wrap;margin:0px 0px 0px 0.8ex;border-left-width:1px">




><i> Can you elaborate on why the linker can't resolve references to an
</i>internal inline function?  That seems like a perfectly reasonable thing for<br>it to be able to do.</blockquote><pre style="white-space:pre-wrap"><span style="font-family:arial"><br></span></pre><pre style="white-space:pre-wrap">


<span style="font-family:arial">"Inline functions that are not externally visible mustn't be instrumented.</span><span style="font-family:arial"> They create a named reference to the inlined function, as the first </span><span style="font-family:arial">parameter to __cyg_profile_* functions, which a linker will never be able </span><span style="font-family:arial">to resolve."</span></pre>


<span><font color="#888888">

</font></span></pre>
<span><font color="#888888">-- <br>
<div dir="ltr">Dipl.-Ing. Gonzalo Brito Gadeschi<br>
Institute of Aerodynamics and Chair of Fluid Mechanics<br>
RWTH Aachen University<br>
Wuellnerstraße 5a<br>
D-52062 Aachen<br>
Germany<br>
Phone: <a href="tel:%2B%2B49-%280%29241-80-94821" value="+492418094821" target="_blank">
++49-(0)241-80-94821</a><br>
Fax: <a href="tel:%2B%2B49-%280%29241-80-92257" value="+492418092257" target="_blank">
++49-(0)241-80-92257</a><br>
E-mail:  <a href="mailto:g.brito@aia.rwth-aachen.de" target="_blank">g.brito@aia.rwth-aachen.de</a><br>
Internet: <a href="http://www.aia.rwth-aachen.de" target="_blank">www.aia.rwth-aachen.de</a></div>
</font></span></div>
<br></div></div>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br>
</blockquote>
</div>
<br>
</div>
</div>

</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Dipl.-Ing. Gonzalo Brito Gadeschi<br>Institute of Aerodynamics and Chair of Fluid Mechanics<br>RWTH Aachen University<br>Wuellnerstraße 5a<br>D-52062 Aachen<br>

Germany<br>Phone: ++49-(0)241-80-94821<br>Fax: ++49-(0)241-80-92257<br>E-mail:  <a href="mailto:g.brito@aia.rwth-aachen.de" target="_blank">g.brito@aia.rwth-aachen.de</a><br>Internet: <a href="http://www.aia.rwth-aachen.de" target="_blank">www.aia.rwth-aachen.de</a></div>


</div>