[llvm-dev] Cast between struct

Jie Zhou via llvm-dev llvm-dev at lists.llvm.org
Wed May 6 18:58:45 PDT 2020



> 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= 



More information about the llvm-dev mailing list