[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