<meta charset="utf-8">I see that some of the system header-file definitions have the internal keyword.<div>For example, </div><div><div><br></div><div>define internal void @__cxx_global_var_init() section "__TEXT,__StaticInit,regular,pure_instructions" {</div>
<div>entry:</div><div>  call void @_ZNSt8ios_base4InitC1Ev(%"class.std::ios_base::Init"* @_ZStL8__ioinit)</div><div>  %0 = call i32 @__cxa_atexit(void (i8*)* bitcast (void (%"class.std::ios_base::Init"*)* @_ZNSt8ios_base4InitD1Ev to void (i8*)*), i8* getelementptr </div>
<div>inbounds (%"class.std::ios_base::Init"* @_ZStL8__ioinit, i32 0, i32 0), i8* bitcast (i8** @__dso_handle to i8*))</div><div>  ret void</div><div>}</div></div><br><div class="gmail_quote">On Mon, May 23, 2011 at 2:24 PM, John Criswell <span dir="ltr"><<a href="mailto:criswell@illinois.edu">criswell@illinois.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

  
    
  
  <div text="#000000" bgcolor="#ffffff"><div><div></div><div class="h5">
    On 5/23/11 1:05 PM, George Baah wrote:
    <blockquote type="cite">
      
      Hi,
      <div> I am writing a pass which is supposed to ignore library
        functions. Is there a way to </div>
      <div>distinguish functions declared and defined by a developer
        from non-local functions (library functions)? </div>
      <div>Thanks.</div>
    </blockquote>
    <br></div></div>
    There is no reliable way to do this, but there are several
    heuristics that will probably work well in practice.<br>
    <br>
    When analyzing a program, any function that is defined (i.e., has a
    function body) most likely came from the program's source code.  The
    exception will be functions declared in system header files or C/C++
    library header files.<br>
    <br>
    Any function that is declared but not defined (i.e., has no function
    body) is either a function that is defined in another translation
    unit (i.e., another source file) or defined in a system or language
    library (e.g., libc).  It is, in general, not possible to
    distinguish between the two situations, although if you've linked
    your entire program into a single bitcode file, the only external
    functions are coming from library functions.<br>
    <br>
    -- John T.<br>
    <br>
    <blockquote type="cite">
      <div><br>
      </div>
      <div>George</div>
      <pre><fieldset></fieldset>
_______________________________________________
LLVM Developers mailing list
<a href="mailto:LLVMdev@cs.uiuc.edu" target="_blank">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </div>

</blockquote></div><br>