> On May 6, 2020, at 21:53, Krzysztof Parzyszek <kparzysz at
quicinc.com> wrote:
>
> You can
> 1. extract individual elements of {i8*, i64},
> 2. bitcast the first to some_struct*,
> 3. insert them into a new struct of type {some_struct*, i64}.
Thanks for the help. I’m thinking the same way. Now I’m stuck with
how to create a struct; I know how to create a llvm::StructType but
I’m not clear of how to create a Value whose type is struct). It seems that
llvm disallowed directly create a Value object; all Values are created from
one of its numerous descendants. Can you give me some guidance here?
Thanks,
- Jie
>
>
> --
> Krzysztof Parzyszek kparzysz at quicinc.com AI tools development
>
>> -----Original Message-----
>> From: llvm-dev <llvm-dev-bounces at lists.llvm.org> On Behalf Of
Jie Zhou via
>> llvm-dev
>> Sent: Wednesday, May 6, 2020 7:17 PM
>> To: Joerg Sonnenberger via llvm-dev <llvm-dev at lists.llvm.org>
>> Subject: [EXT] [llvm-dev] Cast between struct
>>
>> Dear All,
>>
>> In my development, a function returns a struct {i8*, i64}, and on the
call
>> site I need to assign the return value to a struct of type
{some_struct*,
>> i64}.
>> One way to do it is to call the mutateType() method of llvm::Value on
the
>> return value of the function call; however, I’m concerned that this
>> mutateType() method might be too disruptive (it’s discouraged to use it
by
>> the documentation).
>> Since LLVM does not support cast between structs. Is there any way I
can
>> safely “cast” a value of one struct type to another?
>>
>> Thanks,
>> - Jie
>> _______________________________________________
>> LLVM Developers mailing list
>> llvm-dev at lists.llvm.org
>>
https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_llvm-2Ddev&d=DwIGaQ&c=kbmfwr1Yojg42sGEpaQh5ofMHBeTl9EI2eaqQZhHbOU&r=KAtyTEI8n3FritxDpKpR7rv3VjdmUs0luiVKZLb_bNI&m=uYmm3cX0yLTO1MaEx_UXqc7gisr4jIhk9jA-eFWAjAA&s=KKOI1Vd0TktBj4Yu95cYeygctxjDWhOm9DF1NgxRQAs&e=