[llvm-dev] How to distinguish between user defined function in a program and library functions

sunilps via llvm-dev
Wed, 05 Feb 2020 04:01:02 -0000

Actually I want to run some analysis
pass only on the user defined functions but not on the library functions. Is
there any boolean method that can tell which is a library function and which is
not? On 5 Feb 2020 5:23
a.m., David Blaikie <dblaikie@gmail.com> wrote:<br
type="attribution"><blockquote class="quote"
style="margin:0 0 0 .8ex;border-left:1px #ccc
solid;padding-left:1ex"> Generally, you
can't - and optimizations/the compiler shouldn't differentiate between
them. <div
dir="ltr" class="gmail_attr">On Tue, Feb 4, 2020 at 3:25
PM Sunil via llvm-dev <<a
href="mailto:llvm-dev@lists.llvm.org">llvm-dev@lists.llvm.org>
wrote: <blockquote class="gmail_quote"
style="margin:0px 0px 0px 0.8ex;border-left:1px solid
rgb(204,204,204);padding-left:1ex">











Say, I have the following program:


#include

<iostream>

int main(){

std::cout << "hello\n";

return 0;


}







After generating llvm bitcode using the following
command:

$ <font face="Courier New, Courier,
monospace">clang++

        -c -emit-llvm -O -Xclang -disable-llvm-passes
a.cpp



the bitcode has the following function with define.

<font face="Courier New, Courier,
monospace">__cxx_global_var_init

main

_ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc



_ZNSt9basic_iosIcSt11char_traitsIcEE8setstateESt12_Ios_Iostate

_ZNSt11char_traitsIcE6lengthEPKc

_ZStorSt12_Ios_IostateS_

_ZNKSt9basic_iosIcSt11char_traitsIcEE7rdstateEv

_GLOBAL__sub_I_a.cpp







In a pass, I want to know what are the functions defined by the

      user e.g 'main' and what are not e.g. other than
'main'.





Regards,

Sunil





_______________________________________________

LLVM Developers mailing list

<a href="mailto:llvm-dev@lists.llvm.org"
target="_blank">llvm-dev@lists.llvm.org

<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev"
rel="noreferrer"
target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev