[llvm-dev] transfer type to 'local' context

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Tue Aug 15 11:05:43 PDT 2017


On 8/15/2017 5:48 AM, alex via llvm-dev wrote:
> Hi all,
>
> is there an easy way to get a 'copy' of a type living in another context
> into the local context?

No, as far as I know.  (Probably not hard to write, if you really need 
it, though; the LLVM type system is pretty simple.)

> Background:
> when calling a function residing in a different module (context2) from a
> module (context1), we first need to introduce a function declaration of
> the function with empty body.
>
> However, in order to do so, we need the function type.
> pFuncInContext2->getType gives us the type in context2.
> The returnType or argument type might refer to some types yet only
> defined in context2 (e.g. special structs).
>
> In order to get the functin declaration right, I would need to find out
> if we have in context 1every necessary type referred to by the function
> (in context2) and introduce it if not.
>
> Is there an elegant way wrapping all this?
> E.G. getTypeinLocalcontext(context1, pFuncTypeInContext2)?

Why are your modules in different contexts?  IR linking normally 
involves loading all of the relevant modules into the same context.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project



More information about the llvm-dev mailing list