<div dir="ltr">A simple solution is to analyze the argument list of function no_source, if an argument is a function pointer(assume the function type is fTy), draw control dependence edges from this working callInst to all the candidate callee functions with the same function type fTy, some approximations are required here, since you are doing type-based analysis, this approximation is unavoidable.</div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Mar 21, 2017 at 2:21 AM, Alex Denisov via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hello everybody,<br>
<br>
I am trying to do some static analysis, e.g. find which other functions accessible from a function.<br>
Current naive implementation goes over each instruction and whether it is a call site or not.<br>
It works great so far, but there are some cases where it doesn’t work. For example:<br>
<br>
  declare no_source(function: f) // uses f internally<br>
  define foo() { ... }<br>
  define bar() { ... }<br>
<br>
  define buzz() {<br>
    call foo()<br>
    call no_source(&bar)<br>
    ret<br>
  }<br>
<br>
In this case, my implementation catches 'foo' but not 'bar.'<br>
There are must be less trivial but also detectable cases.<br>
<br>
Can anybody give a hint or advice on how to do such kind of analysis?<br>
<br>
Cheers,<br>
Alex.<br>
<span class="HOEnZb"><font color="#888888">--<br>
AlexDenisov<br>
Software Engineer, <a href="https://lowlevelbits.org" rel="noreferrer" target="_blank">https://lowlevelbits.org</a><br>
<br>
______________________________<wbr>_________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/llvm-dev</a><br>
</font></span></blockquote></div><br></div>