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>
On May 5, 2009, at 4:50 PM, Villmow, Micah wrote:> Is there a way to mark all functions as internal from source via > some sort of attribute?"static". However, if you do that, they won't make it into the bc file. -Chris> > 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 > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090505/c537b210/attachment.html>
On Tue, May 5, 2009 at 7:47 PM, Chris Lattner <clattner at apple.com> wrote:> > On May 5, 2009, at 4:50 PM, Villmow, Micah wrote: > > > Is there a way to mark all functions as internal from source via some sort > > of attribute? > > "static". However, if you do that, they won't make it into the bc file. > -ChrisA flag to force them into the .bc file would be a nice feature for clang. Unfortunately, I don't expect it to be urgent enough for me to submit a patch any time soon.
Yeah, I found that out, which is why I was hoping some kind of attribute existed that the compiler knew about. We might go the path of modifying llvm-link to only link in functions that are required as that seems to be the most optimal way of doing it. 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 7:47 PM To: LLVM Developers Mailing List Subject: Re: [LLVMdev] Pass to remove unused functions On May 5, 2009, at 4:50 PM, Villmow, Micah wrote: Is there a way to mark all functions as internal from source via some sort of attribute? "static". However, if you do that, they won't make it into the bc file. -Chris 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 _______________________________________________ LLVM Developers mailing list LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20090506/40ece989/attachment.html>