[LLVMdev] Matching up inlined basic blocks with original basic blocks.

Jeremy Salwen jeremysalwen at gmail.com
Sun Aug 3 23:45:00 PDT 2014


Hi Chandler,

It seems that both functions use a VMap argument in which they create a map
from old values to their cloned copies.  This would work great, however,
when I look in InlineFunction() (InlineFunction.cpp line 794), the VMap
seems to be hidden from the caller, and there is an explicit comment "Scope
to destroy VMap after cloning".

 Is InlineFunction() the wrong entry point for inlining a function?  Or do
I need to create a modified version that exposes the VMap?

Thanks,
Jeremy





On Sun, Aug 3, 2014 at 10:18 PM, Chandler Carruth <chandlerc at google.com>
wrote:

>
> On Sun, Aug 3, 2014 at 6:36 PM, Jeremy Salwen <jeremysalwen at gmail.com>
> wrote:
>
>> Hello All,
>>
>> I have some data tied to the basic blocks in a function, and after
>> inlining that function, I'd like to recover that data in the inlined
>> version.  Is there some way to match up the inlined version of the function
>> with the original basic blocks?
>>
>
> See the code in CloneFunctionInto and CloneAndPruneFunctionInto. This is
> what does the actual inlining. You can see how that code tracks the basic
> blocks after inlining.
>
> Honestly, the right way to do this architecturally is for us to support
> metadata attached to basic blocks (if we don't already?) and then for the
> inliner to preserve it when inlining. Then you could use metadata as a
> container for your data.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140804/472887bf/attachment.html>


More information about the llvm-dev mailing list