[LLVMdev] convert GetElemtPtr result to pointer on element?
Alexander Poddey
alexander.poddey at gmx.net
Wed May 27 11:41:05 PDT 2015
Finally, I solved it using the index information used for the
getGetElementPtr call, and descending the initializer
(GlobalVariable::getInitializer) index by index using getOperand and
dyn_cast<llvm::Constant> for structs and getAggregateElement for arrays.
(I guess getAggregateElemnt should work for struct just the same)...
I thought it would be possible to get this using the index vector and one
call (like getGetElementPtr)...
Alex
Tim Northover wrote:
> On 26 May 2015 at 20:56, Alexander Poddey <alexander.poddey at gmx.net>
> wrote:
>> I forgot to say that I try to do all this in the LLVM API, not IR.
>> I read in a bc'ed program and try to edit it using the API.
>
> Yep, I already assumed you were. But the first step to deciding what
> API calls to use is writing down the LLVM IR you want to produce. If
> that can't be compiled then you haven't got a hope of writing a
> program to do it.
>
> In this case, the GEP gives you a float*. So you either use
> GlobalVariable::getInitializer and hunt through that Constant for the
> one you want (probably valid if the GlobalVariable isConstant()) or
> use a GEP and a load to give you a pointer to that value and load it.
>
> Cheers.
>
> Tim.
More information about the llvm-dev
mailing list