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...@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
> On May 6, 2020, at 21:53, Krzysztof Parzyszek <kpar...@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 kpar...@quicinc.com AI tools development
>
>> -----Original Message-----
>> From: llvm-dev <llvm-dev...@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...@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...@lists.llvm.org
On May 6, 2020, at 22:14, Krzysztof Parzyszek <kpar...@quicinc.com> wrote:-----Original Message-----
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?
The "trick" is to start with "undef" (which always exists for any type).
-Krzysztof