I thought this pass would do it, but when I run it over my bc file the output file is the same as the input file. The issue I guess is a little different. When I link in the huge bc file with the tiny bc file, I only want the resulting bc file to have the function definitions that the tiny bc file requires and not every function in the huge bc file. Any idea's how to do this with the current llvm toolset? Thanks, Micah From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Chris Lattner Sent: Tuesday, May 05, 2009 3:53 PM To: LLVM Developers Mailing List Subject: Re: [LLVMdev] Pass to remove unused functions On May 5, 2009, at 3:48 PM, Villmow, Micah wrote: In order to handle a large vector based math library I link in a fairly large bitcode file that might or might not be needed. The problem is that linking in this bitcode file drastically increases the amount of compile time required. Is there a way to remove all functions that are not used after this linking pass? Something similar to die but removes functions from the compilation unit instead of instructions. The -globaldce pass will remove dead internal globals and functions. -Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090505/8958fb71/attachment.html>
On May 5, 2009, at 4:07 PM, Villmow, Micah wrote:> I thought this pass would do it, but when I run it over my bc file > the output file is the same as the input file.that's probably because your symbols are not internal.> > The issue I guess is a little different. When I link in the huge bc > file with the tiny bc file, I only want the resulting bc file to > have the function definitions that the tiny bc file requires and not > every function in the huge bc file. > > Any idea’s how to do this with the current llvm toolset?You have to roll your own using the lower level APIs. You can move functions between modules etc. Alternatively, you can link the two modules and mark the functions you don't want as internal, then use globaldce. -Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090505/720877dd/attachment.html>
Is there a way to mark all functions as internal from source via some sort of attribute? Thanks for the tips, Micah From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Chris Lattner Sent: Tuesday, May 05, 2009 4:16 PM To: LLVM Developers Mailing List Subject: Re: [LLVMdev] Pass to remove unused functions On May 5, 2009, at 4:07 PM, Villmow, Micah wrote: I thought this pass would do it, but when I run it over my bc file the output file is the same as the input file. that's probably because your symbols are not internal. The issue I guess is a little different. When I link in the huge bc file with the tiny bc file, I only want the resulting bc file to have the function definitions that the tiny bc file requires and not every function in the huge bc file. Any idea's how to do this with the current llvm toolset? You have to roll your own using the lower level APIs. You can move functions between modules etc. Alternatively, you can link the two modules and mark the functions you don't want as internal, then use globaldce. -Chris -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090505/c213f6d6/attachment.html>