<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>