[LLVMdev] Inlining functions

Will Dietz willdtz at gmail.com
Thu Oct 20 12:11:25 PDT 2011

On Thu, Oct 20, 2011 at 12:48 PM, Gabriel Quadros
<gquadrossilva at gmail.com> wrote:
> Dear LLVMers,
>     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?
> thank you very much,
> Gabriel

Try "-inline -internalize -globaldce", should do the trick.

The -globaldce by itself is the pass that does what you want (remove
unreachable functions among other things), but the -internalize marks
all functions as internal (otherwise they're reachable via their
exported symbols, and so globaldce cannot remove them).

Hope this helps,


More information about the llvm-dev mailing list