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

Jacob Carlborg via llvm-dev llvm-dev at lists.llvm.org
Wed Feb 5 10:16:08 PST 2020


On 2020-02-04 17:24, Sunil via llvm-dev wrote:
> Say, I have the following program:
> 
>     #include <iostream>
>     int main(){
>       std::cout << "hello\n";
>       return 0;
>     }
> 
> After generating llvm bitcode using the following command:
>        $ clang++ -c -emit-llvm -O -Xclang -disable-llvm-passes a.cpp
> the bitcode has the following function with define.
> __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'.

Perhaps you can check where a function is defined and treat all 
functions defined in a file passed to the compiler as user defined and 
all other as system defined. Not sure if that's good enough for you.

-- 
/Jacob Carlborg



More information about the llvm-dev mailing list