Hi, I am interested in getting llvm IR only for a subset of the input source code - basically starting from a specified top level function, including all its callee functions (recursively). For example, in the following code, I am interested in a command like "extract -top_function blah()" that will create an llvm IR with just blah() and foo(). int foo() { ... } int blah() { foo() } int junk() { blah(); } int main() { junk(); } I can imagine writing some kind of FunctionPass that filters for specified function etc. But is there already some pass/command/tool that already does something similar? Thanks in advance for helping a newbie! -Ananth -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110809/b01d1646/attachment.html>
Ananth Durbha
2011-Aug-10 06:40 UTC
[LLVMdev] extracting sub-program using specified top level function name
fixing missing subject line in original email. ----- Forwarded Message ----- From: Ananth Durbha <avdurbha at yahoo.com> To: llvm list <llvmdev at cs.uiuc.edu> Sent: Tuesday, August 9, 2011 11:38 PM Subject: Hi, I am interested in getting llvm IR only for a subset of the input source code - basically starting from a specified top level function, including all its callee functions (recursively). For example, in the following code, I am interested in a command like "extract -top_function blah()" that will create an llvm IR with just blah() and foo(). int foo() { ... } int blah() { foo() } int junk() { blah(); } int main() { junk(); } I can imagine writing some kind of FunctionPass that filters for specified function etc. But is there already some pass/command/tool that already does something similar? Thanks in advance for helping a newbie! -Ananth -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110809/71924752/attachment.html>
Hi Ananth, I'm not sure about a tool that already does it, but there is code to construct a callgraph that you could use to write a pass to do this. On Tue, Aug 9, 2011 at 11:38 PM, Ananth Durbha <avdurbha at yahoo.com> wrote:> Hi, > I am interested in getting llvm IR only for a subset of the input > source code - basically starting from a specified top level function, > including all its callee functions (recursively). > > For example, in the following code, I am interested in a command like > "extract -top_function blah()" that will create an llvm IR with just blah() > and foo(). > > int foo() { > ... > } > > int blah() { > foo() > } > > int junk() { > blah(); > } > > int main() { > junk(); > } > > I can imagine writing some kind of FunctionPass that filters for > specified function etc. But is there already some pass/command/tool that > already does something similar? > > Thanks in advance for helping a newbie! > > -Ananth > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > >-- gregory malecha http://www.people.fas.harvard.edu/~gmalecha/ -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110809/bc03da46/attachment.html>
Devang Patel
2011-Aug-10 18:01 UTC
[LLVMdev] extracting sub-program using specified top level function name
Have you looked at llvm-extract tool ? - Devang On Aug 9, 2011, at 11:40 PM, Ananth Durbha wrote:> fixing missing subject line in original email. > > ----- Forwarded Message ----- > From: Ananth Durbha <avdurbha at yahoo.com> > To: llvm list <llvmdev at cs.uiuc.edu> > Sent: Tuesday, August 9, 2011 11:38 PM > Subject: > > Hi, > I am interested in getting llvm IR only for a subset of the input source code - basically starting from a specified top level function, including all its callee functions (recursively). > > For example, in the following code, I am interested in a command like "extract -top_function blah()" that will create an llvm IR with just blah() and foo(). > > int foo() { > ... > } > > int blah() { > foo() > } > > int junk() { > blah(); > } > > int main() { > junk(); > } > > I can imagine writing some kind of FunctionPass that filters for specified function etc. But is there already some pass/command/tool that already does something similar? > > Thanks in advance for helping a newbie! > > -Ananth > > > _______________________________________________ > 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/20110810/148456c9/attachment.html>