[llvm-dev] Inlining functions from multiple assembly files

Robinson, Paul via llvm-dev llvm-dev at lists.llvm.org
Tue Jun 23 08:03:47 PDT 2020


Hi Ranjani,

As nobody else has answered you, I will give it a try, although I am not an expert in this area by any means.

When you say “.s files” what I think of are assembler source text files, i.e., machine instructions.  There is no mechanism for supporting inlining in that case.  But then you also said they are LLVM IR files, which by convention in the LLVM project have a .ll extension.  That’s a different story.  I believe the correct tool for merging several IR files into one file would be llvm-link; once you have a single IR module, then everything would be available for your analysis.

There might be more clever ways to do this, but I’m not aware of a way to extract a single function from one file to merge into another file as a separate IR pass.

Hope this helps,
--paulr

From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of Ranjani Krishnan via llvm-dev
Sent: Monday, June 22, 2020 2:14 AM
To: llvm-dev at lists.llvm.org
Subject: [llvm-dev] Inlining functions from multiple assembly files

I am working on developing a method to do some analysis on Ada code. I have converted the high level code (multiple Ada files) to the corresponding LLVM IR (.s files) using the tool  dragonegg. The structure of my code is such that there are function calls across these files. Is there any way to inline these function calls? That is if function A in A.s calls function B in B.s, can the code for function B be added in A.s using some flag or pass in LLVM, like the AlwaysInlinerLegacyPass?

I need to do the analysis on the .s file, so doing it during linking or assembling will not help.

--
Thanks,
Ranjani
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20200623/e9453513/attachment.html>


More information about the llvm-dev mailing list