[LLVMdev] Inlining functions

Duncan Sands baldrick at free.fr
Thu Oct 20 12:06:48 PDT 2011

Hi Gabriel,

>      I am trying to use your inline pass, and I would like to know if it is
> possible to remove a function from the bitcode file once it is inlined.
> Basically, I try:
> $> opt -inline file2.bc > file2.in.bc
>      and I see that all the functions have been inlined into the main procedure,
> inside file2.in.bc. However, the inlined function is still in the bitcode, even
> though it is unreachable from main. Is there a way to remove this unreachable
> function from the bitcode file?

probably your functions have external linkage (the default).  This means that
they may be called from outside your module.  That is why it would be wrong to
throw them away.  However if you know that they aren't referenced from outside
the module then you can give them internal linkage (see the LangRef for more
linkage types).  This is done automatically by tools like llvm-ld or the gold
plugin that know that they are building the final program, and can compute which
functions are really used externally and which are not (link time optimization).

Ciao, Duncan.

More information about the llvm-dev mailing list