<div dir="ltr"><div>By function and method inlining, you mean, inter-procedural analysis support via inlining the called methods? That seems like an interesting choice. We were just discussing this today, that is, how to efficiently support inter-procedural analysis, and this was one idea that came up. Good to know that we had a right idea then. :)<br>

</div><div><br></div><div>Thanks for the info!</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/2 Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>></span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Ah, yes. Function and method inlining should already be enabled in 3.2, but constructor (and destructor) inlining was not. Hopefully 3.3 will make your life a bit easier!</div>

<span class="HOEnZb"><font color="#888888"><div><br></div><div>Jordan</div></font></span><div><div class="h5"><div><br></div><br><div><div>On May 2, 2013, at 11:40 , Gábor Kozár <<a href="mailto:kozargabor@gmail.com" target="_blank">kozargabor@gmail.com</a>> wrote:</div>

<br><blockquote type="cite"><div dir="ltr"><div>Hi Jordan,<br></div><div><br></div><div>They are in the same TU, in fact, inside the very same file. I'll be able to give you further details (e.g. the dump()-ed SVals) on Monday.</div>

<div><br></div>

<div>Can it be that support for same-TU inter-procedural analysis was added after 3.2? We're using clang 3.2 to avoid stability and backward-compatibility issues.</div><div><br></div><div>Thanks!</div><div><br></div>


<div>
Gabor</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/5/2 Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div style="word-wrap:break-word"><div>I think you mean cross-translation-unit analysis. IPA within one translation unit has been supported for a while. Just to be sure, does your example work if you put definitions of DummyTransaction's methods in the same translation unit?</div>



<div><br></div><div>Jordan</div><div><br></div><div><br></div><div><div><div><div>On May 2, 2013, at 8:16 , Gábor Kozár <<a href="mailto:kozargabor@gmail.com" target="_blank">kozargabor@gmail.com</a>> wrote:</div>

<br></div></div><blockquote type="cite"><div><div><div dir="ltr"><div><div>Hi,<br><br></div>Never mind this e-mail, I realized that tracking this would involve inter-procedural analysis, which the Static Analyzer currently does not support.<br>



<br></div><div>Sorry for the spam!<br>

</div><div><br></div>Gabor<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">2013/4/30 Gábor Kozár <span dir="ltr"><<a href="mailto:kozargabor@gmail.com" target="_blank">kozargabor@gmail.com</a>></span><br>





<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"><div dir="ltr"><div><div><div><div>Hi,<br><br></div>I need to write a checker to make sure that the state of the transaction is checked after commit. This is working fine is basic cases, but it seems to fail when I introduce any level of indirection. For example, consider the following:<br>






<br>class TransactionPtr<br>{<br>public:<br>    TransactionPtr(DummyTransaction& tr) : m_tr(tr) {}<br><br>    DummyTransaction* getTransaction() { return &m_tr; }<br>    <br>private:<br>    DummyTransaction& m_tr;<br>






};<br><br>int main(int argc, char* argv[])<br>{<br>    DummyTransaction tr;<br>    TransactionPtr trp(tr);<br>    <br>    trp.getTransaction()->commit();<br>    <br>    if(tr.isSuccessful()) return 0;<br>    else return 1;<br>






}<br><br></div>Running my checker on this reveals that the analyzer has no idea of the connection between trp.m_tr and tr, and so it fails to detect an issue with the above code.<br><br></div><div>I also tried checkBind(), but it is not called in relation to the  TransactionPtr trp(tr); line.<br>






</div><div><br></div>Is this a known limitation, or am I missing something here? I also tried getBaseRegion(), getSuperRegion(), which didn't lead anywhere. getMemorySpace() on the other hand points to UnknownSpaceRegion.<br>






<br></div>Thanks!<br><br>Gabor<br></div>
</blockquote></div><br></div></div></div>
_______________________________________________<br>cfe-dev mailing list<br><a href="mailto:cfe-dev@cs.uiuc.edu" target="_blank">cfe-dev@cs.uiuc.edu</a><br><a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev</a><br>



</blockquote></div><br></div></blockquote></div><br></div>
</blockquote></div><br></div></div></div></blockquote></div><br></div>