[llvm-dev] Cast between struct (original) (raw)

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 somestruct*, 3. insert them into a new struct of type {somestruct*, 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,

-- 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 {somestruct*, 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.orgcgi-2Dbinmailmanlistinfollvm-2Ddev&d=DwIGaQ&c=kbmfwr1Yojg42sGEpaQh5ofMHBeTl9EI2eaqQZhHbOU&r=KAtyTEI8n3FritxDpKpR7rv3VjdmUs0luiVKZLbbNI&m=uYmm3cX0yLTO1MaExUXqc7gisr4jIhk9jA-eFWAjAA&s=KKOI1Vd0TktBj4Yu95cYeygctxjDWhOm9DF1NgxRQAs&e=



More information about the llvm-dev mailing list